string - bash word splitting mechanism -
i new bash , seeing there automatic word splitting done bash:
a="1 2 3 4"
if echo "a" echo $a
got 1 2 3 4
, has done word splitting implicitly. if loop through "a", got 1, 2, 3, , 4 respectively.
i read here that
the shell scans results of parameter expansion, command substitution, , arithmetic expansion did not occur within double quotes word splitting.
and found if have
b=$a; echo "$b"
i
"1 2 3 4"
so, here problem: when word splitting done? change string itself? take effect when use echo
or for
(loop)? more general, how bash handle on earth?
great thanks!!
read man bash
. assignment, says
all values undergo tilde expansion, parameter , variable expansion, command substitution, arithmetic expansion, , quote removal [ ... ] word splitting not performed, exception of "$@" explained below under special parameters. pathname expansion not performed.
word splitting not happen in [[ ]]
conditions:
word splitting , pathname expansion not performed on words between [[ , ]]
Comments
Post a Comment