1

在 OS X 下,我有一个 bash shell 脚本,它带有一个参数(这是一个文件夹名称)

当我打电话时:

echo "Build Starting for $1" | tee ~/MyFolder/$1/build.log

它工作正常。它将正确的“$1”参数回显到 ~/MyFolder/$1/build.log 文件(存在)中。但是,当我调用另一个可执行文件并尝试使用 $1 参数时,该参数始终为空。

xcodebuild -configuration Release -project MyProject.xcodeproj | tee -a ~/MyFolder/$1/build.log

这会在“~/MyFolder”中创建“build.log”,并忽略 $1。

这是为什么?我需要以某种方式“导出”它吗?

4

1 回答 1

1

如果您正在调用一个函数或另一个脚本,并且希望相同的 $1、$2、.. 可用,请使用:

myFunctionOrScript "$@"

"$@"等价于"$1" "$2" "$3" ...,因此将确保子进程中的 "$1" 与父进程中的 "$1" 相同。

您还可以将它们的值分配给新的命名变量:

export mydir=$1

然后$mydir$1子进程脚本中使用。

于 2013-01-22T21:24:55.337 回答