在(bash)脚本之间传递带空格的参数
我有以下两个bash脚本 a、 上海: b、 上海: someApp二进制文件将在(bash)脚本之间传递带空格的参数,bash,Bash,我有以下两个bash脚本 a、 上海: b、 上海: someApp二进制文件将$*作为两个参数(“My”和“Argument”)而不是1接收 我已经测试了几个方面: 仅通过b.sh运行someApp可以正常工作 迭代+回显b中的参数。sh按预期工作 使用$@而不是$*没有什么区别 $*,无引号,扩展为两个单词。您需要引用它,以便someApp接收单个参数 someApp "$*" 您可能希望改用$@,这样someApp将在调用b.sh时收到两个参数 b.sh 'My first' 'My
$*
作为两个参数(“My”和“Argument”)而不是1接收
我已经测试了几个方面:
- 仅通过
运行someApp可以正常工作b.sh
- 迭代+回显
按预期工作b中的参数。sh
- 使用
而不是$@
没有什么区别$*
$*
,无引号,扩展为两个单词。您需要引用它,以便someApp
接收单个参数
someApp "$*"
您可能希望改用$@
,这样someApp
将在调用b.sh
时收到两个参数
b.sh 'My first' 'My second'
使用
someApp“$*”
,someApp
将接收一个参数My first My second
。使用someApp“$@”
,someApp
将收到两个参数,myfirst
和mysecond
,trysomeApp“$*”
或someApp“$@”
Yupp-效果非常好!很容易忽略的关键是“$@”似乎需要引用。$@还不够。@2k正确。不加引号,$@
和$*
工作相同。@马特,这是完全不同的。“$@”的特殊之处在于它分别引用每个参数。因此,它可能导致不止一个论点。“$something”只是在$something扩展到的任何对象周围加引号,并且始终是单个参数。只有在我设置IFS=$'\n'
时,答案才对我有效。不知道为什么。
someApp "$*"
b.sh 'My first' 'My second'