必要なコードは次のとおりです。
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
list=SOMETHING
for x in "$list"
do
echo $x
done
そして私が望む出力:
a1 a2
b1 b2
問題は、どうあるべきかというSOMETHING
ことです。$list
私は同じように振る舞いたいです$@
。
注:使用$IFS
できずeval
、ループ全体を使用できません。
これはおそらくあなたが得ることができる限り近いです:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
set -- "$x1" "$x2"
for x in "$@"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
出力:
[a1 a2]
[b1 b2]
Bashでは、配列を使用できます。
#!/bin/bash
x1="a1 a2"
x2="b1 b2"
list=("$x1" "$x2")
for x in "${list[@]}"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
同じ出力。
標準のPOSIXシェルでは不可能です。