ここでは for loop の変なやり方があります:
for item in ${list//\n/
}
do
echo "Item: $item"
done
もう少しわかりやすくて読みやすい方法は次のようになります:
cr='
'
for item in ${list//\n/$cr}
do
echo "Item: $item"
done
しかし、これは複雑すぎてスペースが必要になります:
for item in ${list//\n/ }
do
echo "Item: $item"
done
002 変数には改行が含まれていません。それは、$line
の後に`ここでは for loop の変なやり方があります:
for item in ${list//\n/
}
do
echo "Item: $item"
done
もう少しわかりやすくて読みやすい方法は次のようになります:
cr='
'
for item in ${list//\n/$cr}
do
echo "Item: $item"
done
しかし、これは複雑すぎてスペースが必要になります:
for item in ${list//\n/ }
do
echo "Item: $item"
done
002 変数には改行が含まれていません。それは、$line
の後にが続くインスタンスを含んでいます。あなたはと明確にそれを見ることができます:
$ cat t.sh
#! /bin/bash
list="One\ntwo\nthree\nfour"
echo $list | hexdump -C
$ ./t.sh
00000000 4f 6e 65 5c 6e 74 77 6f 5c 6e 74 68 72 65 65 5c |One\ntwo\nthree\|
00000010 6e 66 6f 75 72 0a |nfour.|
00000016
置換は、それがループのために動作するのに十分であるスペースでそれらを置き換えています:
$ cat t.sh
#! /bin/bash
list="One\ntwo\nthree\nfour"
echo ${list//\n/ } | hexdump -C
$ ./t.sh
00000000 4f 6e 65 20 74 77 6f 20 74 68 72 65 65 20 66 6f |One two three fo|
00000010 75 72 0a |ur.|
00000013
デモ:
$ cat t.sh
#! /bin/bash
list="One\ntwo\nthree\nfour"
echo ${list//\n/ } | hexdump -C
for item in ${list//\n/ } ; do
echo $item
done
$ ./t.sh
00000000 4f 6e 65 20 74 77 6f 20 74 68 72 65 65 20 66 6f |One two three fo|
00000010 75 72 0a |ur.|
00000013
One
two
three
four