29

如何将一个 shell 脚本的所有参数传递给另一个?我已经尝试过 $*,但正如我所料,如果您引用了参数,那将不起作用。

例子:

$ 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 回答