我不了解shell脚本。谁能解释这是什么意思?
exec python2.7.1 "${BASEDIR}/../foo/foo.py" ${1+"$@"}
我认为这将执行foo文件夹中的foo.py文件。但是,${1+"$@"}
的含义是什么?
答案 0 :(得分:1)
$@
是shell用来处理脚本的命令行参数的内置变量之一。在剧本中:
$0
是启动脚本的命令
$1
是第一个参数
$2
是第二个参数,等等......
$*
是所有参数的列表,包括启动脚本的命令
$@
是所有参数的列表,不包括启动脚本的命令。所以,如果整个命令是:
myscript.sh glorf frolg flerg
然后echo $@
将回复:
glorf frolg flerg
我不确定$ {1 ...}的内容是什么。它似乎没有改变行为。它仍然只是回应$@
。基本上你的脚本所做的就是将所有参数传递给foo.py。
好的,谢谢@Wander Nauta。查看here,您可以看到${1+"$@"}
表示“如果$1
存在,则传递$@
,否则不传递任何内容。”