bash:変数をソリッド文字列に設定できません。

bash:変数をソリッド文字列に設定できません。

次のように、完全なコマンド文字列を使用して変数を設定することはできません。

A="/bin/ps wwwaux"

for a in $A
do
  echo "$a"
done

どういうわけかソリッド文字列の代わりに配列を割り当てます。

私の環境:

GNU/Linux, GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)

答え1

forループにはリストが必要です。

for a in $A; do
  echo "$a"
done

拡張:

for a in /bin/ps wwwaux; do
  echo "$a"
done

順番に印刷されます。ループは2回実行されます。二つ議論。出力は次のとおりです。

/bin/ps
wwwaux

代わりに引用符を使用してください。

for a in "$A"; do
  echo "$a"
done

これは次のように拡張されます。

for a in "/bin/ps wwwaux"; do
  echo "$a"
done

そのまま一度繰り返す一つ議論。出力は次のとおりです。

/bin/ps wwwaux

答え2

for f in "$A"
do
  echo $f
done

あなたの課題はすでにあなたが望むことをしています - "for"ループはあなたが望ましくない方法でそれを破ります。

関連情報