我有一个使用以下语法的bash脚本:
if [ ! -z ${ARGUMENT+x} ]; then
Run Code Online (Sandbox Code Playgroud)
参数名称后面的"+ x"语法是什么意思?
che*_*ner 11
我不讨论语法,而是指出它试图做什么:它试图确定变量ARGUMENT是否设置为任何值(空或非空)。在现代中bash,人们会改用-v运算符:
if [[ -v ARGUMENT ]]; then
Run Code Online (Sandbox Code Playgroud)
这意味着如果$ARGUMENT不为null,它将被字符串替换x
$ echo ${ARGUMENT+x}
$ ARGUMENT=123
$ echo ${ARGUMENT+x}
x
Run Code Online (Sandbox Code Playgroud)
你也可以用这个表格写这个:
${ARGUMENT:+x}
Run Code Online (Sandbox Code Playgroud)