0
for i in "a" "a b"; do
    echo $i;
done

エコー:

a
a b

どうすればのようなものを書いてfor i in $input; do割り当てること"a" "a b"ができinputますか?空白は重要です。そうでなけれ$(echo ...)ば動作します。

編集:問題はファイルに関するものでも、を使用してキャッチできる入力に関するものでもありません$@

4

2 に答える 2

4

bashを使用しているので、次のことができます。

input=("a" "a b")

for i in "${input[@]}"; do
  echo $i
done
于 2012-06-06T23:11:00.337 に答える
1

これは"$@"、コマンドライン引数の構成を使用してのみ移植可能に実行できます。

ただし、実際のコマンドライン引数が不要になった場合は、setその内容を置き換えるために使用できます。

input='"a" "a b"'
eval set fnord $input
shift
for i in "$@"; do
    echo $i
done

この質問をしただけで、制限の少ないスクリプト言語に切り替える必要がある複雑さのレベルに近づいていることを示唆していることに注意してください(PerlとPythonが通常の選択です)。

于 2012-06-06T23:22:24.883 に答える