Assign with name=value, with no spaces around the =, and read the value back with $name or ${name}. The spaces matter, because name = value makes Bash run a command called name with = and value as its arguments.
# Declaration
name="John"
age=25
# Usage
echo "Name: $name, Age: $age"
echo "Name: ${name}, Age: ${age}" # Preferred syntax
The braces mark where the name ends, so ${name}_backup works where $name_backup would look for a variable called name_backup. Wrap each use in double quotes, as in "$name", so a value with spaces stays one word.
A variable you create stays in the current shell, and programs the script starts do not see it. export passes it to them through the environment. local limits a variable to the function that declares it and the functions that function calls. readonly stops later changes anywhere in the script.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓