104

我有以下 bash 两个脚本

灰:

#!/bin/bash
./b.sh 'My Argument'

b.sh:

#!/bin/bash
someApp $*

someApp 二进制文件接收$*2 个参数(“My”和“Argument”)而不是 1 个。

我已经测试了几件事:

  • 仅通过运行 someAppb.sh可以按预期工作
  • b.sh按预期迭代+回显作品中的参数
  • 使用$@而不是$*没有区别
4

1 回答 1

162

$*,未引用,扩展为两个单词。您需要引用它以便someApp接收单个参数。

someApp "$*"

您可能想$@改用,因此someApp如果您调用b.sh

b.sh 'My first' 'My second'

使用someApp "$*",someApp将收到一个参数My first My second。使用someApp "$@",someApp将接收两个参数,My first并且My second.

于 2013-06-13T18:21:28.800 回答