Question re: braces and quotes
I was reviewing the Suse/Gentoo run-crons script, and comparing it with
some elementary scripts I had written. All of a sudden, I realized that
despite reading the docs and advanced scripting manual, I really did not
have a good grasp on the concept of when to quote, enclose in a brace, etc.
This snippet crystallizes my confusion. As written, the variable
definition for LOCKFILE uses braces, but I found that it made no
difference whether or not I used braces, quotes, or any combination. I
understand that certain test contructs, such as [ -n... ] require quotes,
and if I want to manipulate a variable, braces are useful for
substitution, but could someone please explain if the first assignment of
LOCKFILE is proper, and why? For that matter, when would the assignment to
LOCKDIR have to be quoted? If there is a whitespace?
Thanks a lot!
#!/bin/sh
LOCKDIR=/var/spool/cron/lastrun
LOCKFILE=${LOCKDIR}/lock
echo "braces no quotes $LOCKFILE"
LOCKFILE="${LOCKDIR}"/lock
echo "braces quote $LOCKFILE"
LOCKFILE=$LOCKDIR/lock
echo "no braces no quote $LOCKFILE"
LOCKFILE="$LOCKDIR"/lock
echo "no braces quote $LOCKFILE"
--
Peter
|