5

文字列をコマンド ライン引数として bash スクリプトに渡したい。単に私のbashスクリプトは次のとおりです。

>cat test_script.sh

for i in $*
do 
echo $i
done

入力しました

bash test_script.sh test1 test2 "test3 test4"

出力:

test1
test2
test3
test4

私が期待している出力:

test1
test2
test3 test4

バックスラッシュ (test1 test2 "test3\ test4") と単一引用符を使用してみましたが、期待どおりの結果が得られませんでした。

期待される出力を得るにはどうすればよいですか?

4

2 に答える 2

8

以下を使用する必要があります。

for i in "$@"
do echo $i
done

あるいは:

for i in "$@"
do echo "$i"
done

最初のものは、引数内の複数のスペースを失います (ただし、引数の単語は一緒に保持されます)。2 番目は、引数のスペースを保持します。

in "$@"節を省略することもできます。あなたが書いた場合、それは暗示されますfor i(しかし、個人的には、私は省略形を使用しません).

于 2012-11-01T11:10:26.330 に答える
-1

printf を使ってみる

for i in $* do $(printf '%q' $i) done
于 2012-11-01T11:08:17.657 に答える