DEV Community

Meir Gabay
Meir Gabay

Posted on

6 3

Bash scripting tips

Naming convention

This is only a recommendation, it doesn't really set the type of the variable, rather than a best practice to easily recognize variables scope.

Type Scope Convention
Environment Global MY_VARIABLE
Global Global _MY_VARIABLE
Local Function my_variable

Environment variables

Available from anywhere in your code, including sub-processes and background-processes. Environment variables that were declared in a sub-process or a background-process are out of the scope of the main process.

sub-process

#!/bin/usr/env bash
export MAIN_VAR="MAIN_VAR value"
echo "main-process BEFORE - MAIN_VAR        = $MAIN_VAR"

# sub-process
bash -c '
export                      SUB_PROCESS_VAR="SUB_PROCESS_VAR value"
echo "sub-process         - SUB_PROCESS_VAR = $SUB_PROCESS_VAR"
echo "sub-process  BEFORE - MAIN_VAR        = $MAIN_VAR"
export                      MAIN_VAR="MAIN_VAR changed value"
echo "sub-process  AFTER  - MAIN_VAR        = $MAIN_VAR"
'

echo "main-process AFTER  - MAIN_VAR        = $MAIN_VAR"
echo "main-process        - SUB_PROCESS_VAR = $SUB_PROCESS_VAR"
Enter fullscreen mode Exit fullscreen mode

Output

main-process BEFORE - MAIN_VAR        = MAIN_VAR value
sub-process         - SUB_PROCESS_VAR = SUB_PROCESS_VAR value
sub-process  BEFORE - MAIN_VAR        = MAIN_VAR value
sub-process  AFTER  - MAIN_VAR        = MAIN_VAR changed value
main-process AFTER  - MAIN_VAR        = MAIN_VAR value
main-process        - SUB_PROCESS_VAR =
Enter fullscreen mode Exit fullscreen mode

background-process

#!/bin/usr/env bash
export MAIN_VAR="MAIN_VAR value"
echo "main-process BEFORE - MAIN_VAR       = $MAIN_VAR"

# background-process
export BG_PROCESS_VAR="BG_PROCESS_VAR value" && \
echo "bg-process          - BG_PROCESS_VAR = $BG_PROCESS_VAR" && \
echo "bg-process   BEFORE - MAIN_VAR       = $MAIN_VAR" && \
export MAIN_VAR="MAIN_VAR changed value" && \
echo "bg-process   AFTER  - MAIN_VAR       = $MAIN_VAR" \
& # set bg process

# Wait for bg processes (jobs) to complete
# Otherwise, the following lines won't be executed
wait

echo "main-process AFTER  - MAIN_VAR       = $MAIN_VAR"
echo "main-process        - BG_PROCESS_VAR = $BG_PROCESS_VAR"
Enter fullscreen mode Exit fullscreen mode

Output

main-process BEFORE - MAIN_VAR       = MAIN_VAR value
bg-process          - BG_PROCESS_VAR = BG_PROCESS_VAR value
bg-process   BEFORE - MAIN_VAR       = MAIN_VAR value
bg-process   AFTER  - MAIN_VAR       = MAIN_VAR changed value
main-process AFTER  - MAIN_VAR       = MAIN_VAR value
main-process        - BG_PROCESS_VAR =
Enter fullscreen mode Exit fullscreen mode

Image of PulumiUP 2025

From Cloud to Platforms: What Top Engineers Are Doing Differently

Hear insights from industry leaders about the current state and future of cloud and IaC, platform engineering, and security.

Save Your Spot

Top comments (0)

👋 Kindness is contagious

Value this insightful article and join the thriving DEV Community. Developers of every skill level are encouraged to contribute and expand our collective knowledge.

A simple “thank you” can uplift someone’s spirits. Leave your appreciation in the comments!

On DEV, exchanging expertise lightens our path and reinforces our bonds. Enjoyed the read? A quick note of thanks to the author means a lot.

Okay