Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Variable assignment (no spaces around =) in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Variable assignment (no spaces around =)
Start
↓
Write variable name
↓
Write = with NO spaces
↓
Write value
↓
Variable assigned
↓
Use variable later
Assign a value to a variable by writing name=value with no spaces around =, then use the variable.
Execution Sample
Bash Scripting
name=John
age=30

# Print variables
echo $name
Assigns values to variables 'name' and 'age' without spaces, then prints the value of 'name'.
Execution Table
StepCode LineActionVariableValueOutput
1name=JohnAssign value to variable 'name'nameJohn
2age=30Assign value to variable 'age'age30
3echo $namePrint value of 'name'nameJohnJohn
4End of script
💡 Script ends after printing the value of 'name'.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
nameundefinedJohnJohnJohn
ageundefinedundefined3030
Key Moments - 2 Insights
Why can't I put spaces around the = sign in bash variable assignment?
In bash, spaces around = cause errors because the shell treats spaces as separators. See execution_table steps 1 and 2 where assignment works only without spaces.
What happens if I try to assign with spaces like 'name = John'?
Bash treats 'name' as a command and '= John' as arguments, causing an error. This is why no spaces are allowed, as shown in the successful assignments in execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'age' after step 1?
A30
Bundefined
CJohn
Dempty string
💡 Hint
Check the variable_tracker table under 'age' after step 1.
At which step does the script print output?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Output' column in the execution_table.
If you add spaces like 'name = John', what will happen?
ABash throws an error or treats 'name' as a command
BVariable 'name' gets assigned 'John'
CVariable 'name' gets assigned '= John'
DVariable 'name' gets assigned empty string
💡 Hint
Refer to key_moments explanation about spaces around '='.
Concept Snapshot
Bash variable assignment:
Use name=value with NO spaces around '='.
Spaces cause errors because shell splits tokens.
Access variable with $name.
Example:
name=John
age=30
echo $name
Full Transcript
In bash scripting, to assign a value to a variable, write the variable name, then an equal sign with no spaces, then the value. For example, name=John assigns 'John' to the variable 'name'. Spaces around the equal sign cause errors because bash treats spaces as separators. After assignment, you can use the variable by prefixing it with a dollar sign, like echo $name to print its value. The execution table shows step-by-step how variables 'name' and 'age' get assigned and how the value of 'name' is printed. Remember, no spaces around '=' in assignments.

Practice

(1/5)
1. Which of the following is the correct way to assign the value hello to a variable named greet in bash?
easy
A. greet =hello
B. greet = hello
C. greet= hello
D. greet=hello

Solution

  1. Step 1: Understand bash variable assignment rules

    Bash does not allow spaces around the = sign when assigning variables.
  2. Step 2: Check each option for spaces

    Only greet=hello has no spaces around =. Options B, C, and D have spaces, which cause errors.
  3. Final Answer:

    greet=hello -> Option D
  4. Quick Check:

    No spaces around = means correct assignment [OK]
Hint: No spaces around = in bash variable assignment [OK]
Common Mistakes:
  • Adding spaces around = causes syntax errors
  • Using quotes unnecessarily in simple assignments
  • Trying to assign with spaces after =
2. Which of the following bash commands correctly assigns the value 42 to the variable num?
easy
A. num=42
B. num= 42
C. num =42
D. num = 42

Solution

  1. Step 1: Identify spaces around the equal sign

    Bash requires no spaces around the = sign for variable assignment.
  2. Step 2: Verify each option

    Only num=42 has no spaces around =. Others have spaces causing errors.
  3. Final Answer:

    num=42 -> Option A
  4. Quick Check:

    No spaces around = means correct syntax [OK]
Hint: Remember: no spaces around = in bash assignments [OK]
Common Mistakes:
  • Leaving spaces around = causes syntax errors
  • Confusing assignment with comparison operators
  • Using quotes unnecessarily for numbers
3. What will be the output of the following bash script?
name=John
echo $name
medium
A. name
B. Syntax error
C. John
D. $name

Solution

  1. Step 1: Understand variable assignment and usage

    The variable name is assigned the value John without spaces around =.
  2. Step 2: Understand echo with variable

    echo $name prints the value stored in name, which is John.
  3. Final Answer:

    John -> Option C
  4. Quick Check:

    Variable value printed, not variable name [OK]
Hint: Use $ before variable to print its value [OK]
Common Mistakes:
  • Printing variable name instead of value
  • Forgetting $ before variable in echo
  • Adding spaces around = causing errors
4. Identify the error in the following bash script:
count =10
echo $count
medium
A. Spaces around = cause syntax error
B. Missing $ in echo
C. Variable name is invalid
D. No error, script runs fine

Solution

  1. Step 1: Check variable assignment syntax

    The assignment count =10 has a space before =, which is not allowed in bash.
  2. Step 2: Understand effect of spaces

    Spaces around = cause bash to treat count as a command, leading to syntax error.
  3. Final Answer:

    Spaces around = cause syntax error -> Option A
  4. Quick Check:

    No spaces around = means valid assignment [OK]
Hint: No spaces around = in assignment to avoid errors [OK]
Common Mistakes:
  • Adding spaces around = in assignment
  • Forgetting $ when printing variable
  • Assuming variable names can have spaces
5. You want to store the current year in a variable year using the command date +%Y. Which of the following is the correct way to assign this output to year in bash?
hard
A. year = $(date +%Y)
B. year=$(date +%Y)
C. year= $(date +%Y)
D. year= '$(date +%Y)'

Solution

  1. Step 1: Understand command substitution syntax

    To assign command output, use $(command) without spaces around =.
  2. Step 2: Check each option for spaces and quotes

    year=$(date +%Y) has no spaces around = and uses correct command substitution syntax. Options A and C have spaces causing errors. year= '$(date +%Y)' uses quotes which are unnecessary and may cause literal assignment.
  3. Final Answer:

    year=$(date +%Y) -> Option B
  4. Quick Check:

    No spaces and correct command substitution [OK]
Hint: Use $(command) with no spaces around = for command output assignment [OK]
Common Mistakes:
  • Adding spaces around = causes errors
  • Using quotes around command substitution
  • Forgetting to use $( ) for command output
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard