for i in "a" "a b"; do
echo $i;
done
エコー:
a
a b
どうすればのようなものを書いてfor i in $input; do
割り当てること"a" "a b"
ができinput
ますか?空白は重要です。そうでなけれ$(echo ...)
ば動作します。
編集:問題はファイルに関するものでも、を使用してキャッチできる入力に関するものでもありません$@
。
bashを使用しているので、次のことができます。
input=("a" "a b")
for i in "${input[@]}"; do
echo $i
done
これは"$@"
、コマンドライン引数の構成を使用してのみ移植可能に実行できます。
ただし、実際のコマンドライン引数が不要になった場合は、set
その内容を置き換えるために使用できます。
input='"a" "a b"'
eval set fnord $input
shift
for i in "$@"; do
echo $i
done
この質問をしただけで、制限の少ないスクリプト言語に切り替える必要がある複雑さのレベルに近づいていることを示唆していることに注意してください(PerlとPythonが通常の選択です)。