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

时间:2013-06-13 18:09:05

标签: bash

我有以下bash两个脚本

a.sh:

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

b.sh:

#!/bin/bash
someApp $*

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

我测试了几件事:

  • 仅通过b.sh按预期运行某些应用程序
  • 迭代+回显b.sh中的参数按预期工作
  • 使用$@代替$*并没有什么区别

1 个答案:

答案 0 :(得分:120)

$*,不带引号,扩展为两个字。您需要引用它以便someApp收到一个参数。

someApp "$*"

您可能希望使用$@,以便someApp如果要将b.sh称为

,则会收到两个参数
b.sh 'My first' 'My second'

使用someApp "$*"someApp会收到一个参数My first My second。使用someApp "$@"someApp会收到两个参数My firstMy second