How does `${var}` differ from `$var`?

QuestionsQuestions8 SkillsProDec, 14 2025
0128

That's a great question! Labby is here to clarify.

The main difference between ${var} and $var lies in how the shell interprets the variable name, especially when it's followed immediately by other characters.

  • $var (Simple Expansion): This is the most common way to reference a variable. The shell expands var to its value.

    • Works perfectly fine when the variable name is clearly delimited:

      name="Alice"
      echo "Hello, $name!"  # Output: Hello, Alice!
    • Can lead to ambiguity if the variable name is immediately followed by other characters that could be part of a longer variable name:

      MyFruit="Apple"
      echo "$MyFruitJuice"  # The shell looks for a variable named MyFruitJuice, which might not exist.
                            # If MyFruitJuice isn't set, it will print nothing.
  • ${var} (Brace Expansion/Parameter Expansion): This syntax explicitly defines the boundaries of the variable name to be expanded.

    • Prevents ambiguity when concatenating strings directly after a variable:

      MyFruit="Apple"
      echo "${MyFruit}Juice" # Output: AppleJuice

      Here, the curly braces clearly tell the shell that MyFruit is the variable, and Juice is a literal string to be appended.

    • It's essentially a safer and more robust way to expand variables, especially in complex scenarios. When in doubt, using ${var} is often a good practice because it's always unambiguous.

In your current step, you saw this in action with:

echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ"

Without the curly braces around MyFirstLetters, the shell would have looked for a variable named MyFirstLettersDEFGHIJ, which doesn't exist, leading to an incorrect output.

In summary, ${var} is a more explicit and unambiguous way to reference a variable, especially helpful when concatenating strings or when the variable name's boundary might be unclear to the shell. $var works fine in simpler cases, but ${var} is generally safer.

Let me know if this makes sense!

0 Comments

no data
Be the first to share your comment!