【问题标题】:pass arguments between shell scripts but retain quotes在 shell 脚本之间传递参数但保留引号
【发布时间】:2010-12-31 12:35:34
【问题描述】:

如何将一个 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

【问题讨论】:

标签: shell argument-passing


【解决方案1】:

使用"$@" 而不是$* 来保留引号:

./script2.sh "$@"

更多信息:

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

$*
所有位置参数,被视为一个单词

注意:“$*”必须加引号。

$@
与 $* 相同,但每个参数都是一个带引号的字符串,即 参数被原封不动地传递,没有解释或扩展。 这意味着,除其他外,参数中的每个参数 list 被视为一个单独的词。

注意:当然,“$@”应该加引号。

【讨论】:

  • 我遇到了括号问题 - 我遇到了它并且无法自己解决。
猜你喜欢
  • 1970-01-01
  • 2020-01-26
  • 2011-10-22
  • 2017-10-31
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多