这在shell脚本中意味着什么? $ {1 +" $ @"}?

时间:2016-06-28 17:48:34

标签: shell

我不了解shell脚本。谁能解释这是什么意思?

exec python2.7.1 "${BASEDIR}/../foo/foo.py" ${1+"$@"}

我认为这将执行foo文件夹中的foo.py文件。但是,${1+"$@"}的含义是什么?

1 个答案:

答案 0 :(得分:1)

$@是shell用来处理脚本的命令行参数的内置变量之一。在剧本中:

$0是启动脚本的命令

$1是第一个参数

$2是第二个参数,等等......

$*是所有参数的列表,包括启动脚本的命令

$@是所有参数的列表,不包括启动脚本的命令。所以,如果整个命令是:

myscript.sh glorf frolg flerg

然后echo $@将回复:

glorf frolg flerg

我不确定$ {1 ...}的内容是什么。它似乎没有改变行为。它仍然只是回应$@。基本上你的脚本所做的就是将所有参数传递给foo.py。

好的,谢谢@Wander Nauta。查看here,您可以看到${1+"$@"}表示“如果$1存在,则传递$@,否则不传递任何内容。”