29

あるシェル スクリプトのすべての引数を別のシェル スクリプトに渡すにはどうすればよいですか? $* を試してみましたが、予想どおり、引数を引用すると機能しません。

例:

$ cat script1.sh

#! /bin/sh
./script2.sh $*

$ cat script2.sh

#! /bin/sh
echo $1
echo $2
echo $3

$ script1.sh apple "pear orange" banana
apple
pear
orange

印刷したい:

apple
pear orange
banana
4

1 に答える 1

32

引用符を保持する"$@"代わりに使用します。$*

./script2.sh "$@"

より詳しい情報:

http://tldp.org/LDP/abs/html/internalvariables.html

$*
単一の単語として見られるすべての位置パラメータ

注: 「$*」は引用符で囲む必要があります。

$@
$* と同じですが、各パラメーターは引用符で囲まれた文字列です。つまり、パラメーターは解釈や展開なしでそのまま渡されます。これは、とりわけ、引数リスト内の各パラメーターが個別の単語として認識されることを意味します。

注: もちろん、"$@" は引用符で囲む必要があります。

于 2009-12-31T21:27:07.433 に答える