Monday, July 5, 2010

Good Habit #4: Quote variables with caution

Always be careful with shell expansion and variable names. It is generally a good idea to enclose variable calls in double quotation marks, unless you have a good reason not to. Similarly, if you are directly following a variable name with alphanumeric text, be sure also to enclose the variable name in curly braces ({}) to distinguish it from the surrounding text. Otherwise, the shell interprets the trailing text as part of your variable name -- and most likely returns a null value.

Listing 1 provides examples of various quotation and non-quotation of variables and their effects.

Listing 1. Example of good habit #4: Quoting (and not quoting) a variable

~ $ ls tmp
/a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR" 
tmp/*
~ $ echo $VARa
 
~ $ echo "$VARa"

~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $


No comments:

Post a Comment