変数を繰り返すと、なぜn="1 2 3"
次のような結果が出るのでしょうか。
$ n="1 2 3"; for a in $n; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3
しかし、文字列を最初に変数に入れないと、まったく異なる動作が発生します。
$ for a in "1 2 3"; do echo $a $a $a; done
1 2 3 1 2 3 1 2 3
まだ見知らぬ人:
$ for a in ""1 2 3""; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3
文字列が変数にあるかどうかにかかわらず、文字列が異なる動作をするのはなぜですか?
ベストアンサー1
n="1 2 3"
for a in $n; do # This will iterate over three strings, '1', '2', and '3'
for a in "1 2 3"; do # This will iterate once with the single string '1 2 3'
for a in "$n"; do # This will do the same
for a in ""1 2 3""; do # This will iterate over three strings, '""1', '2', and '3""'.
# The first and third strings simply have a null string
# respectively prefixed and suffixed to them