Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在(bash)脚本之间传递带空格的参数_Bash - Fatal编程技术网

在(bash)脚本之间传递带空格的参数

在(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

我有以下两个bash脚本

a、 上海:

b、 上海:

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

我已经测试了几个方面:

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

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

someApp "$*"
您可能希望改用
$@
,这样
someApp
将在调用
b.sh
时收到两个参数

b.sh 'My first' 'My second'

使用
someApp“$*”
someApp
将接收一个参数
My first My second
。使用
someApp“$@”
someApp
将收到两个参数,
myfirst
mysecond
try
someApp“$*”
someApp“$@”
Yupp-效果非常好!很容易忽略的关键是“$@”似乎需要引用。$@还不够。@2k正确。不加引号,
$@
$*
工作相同。@马特,这是完全不同的。“$@”的特殊之处在于它分别引用每个参数。因此,它可能导致不止一个论点。“$something”只是在$something扩展到的任何对象周围加引号,并且始终是单个参数。只有在我设置
IFS=$'\n'
时,答案才对我有效。不知道为什么。
someApp "$*"
b.sh 'My first' 'My second'