bash-if命令的说明
如果有人能解释一下下面的代码是什么意思(“-z${1+x}”),我会很高兴的。 我有一部分代码,我正在努力理解它。我知道它用字符串检查某些东西,但不知道具体是什么bash-if命令的说明,bash,if-statement,Bash,If Statement,如果有人能解释一下下面的代码是什么意思(“-z${1+x}”),我会很高兴的。 我有一部分代码,我正在努力理解它。我知道它用字符串检查某些东西,但不知道具体是什么 if [ -z ${1+x} ]; then error "Please provide some information" 1; fi Thansk提前执行测试。如果测试为“真”,则返回0;如果测试为“假”,则返回非零值 -z测试接受一个参数,如果参数是空(零长度)字符串,则返回“true” 如果设置了位置参数1,则“$
if [ -z ${1+x} ]; then
error "Please provide some information" 1;
fi
Thansk提前执行测试。如果测试为“真”,则返回0;如果测试为“假”,则返回非零值
-z
测试接受一个参数,如果参数是空(零长度)字符串,则返回“true”
如果设置了位置参数1,则“${1+x}”扩展将扩展到给定的值(x
,但您可以在其中放置任何需要的内容)。如果已为其赋值(即使该值为空字符串),则会设置该值,否则会取消设置该值。如果未设置位置参数,则展开将生成空字符串
请注意,它也适用于变量名。例如,可以使用“${MYVAR+x}”
如果未将任何值作为参数1传递给脚本或函数,则整个
if
块将显示错误消息。但如果传递了空值(即myscript”“
),则不会出现错误消息。可以用一个示例更好地解释
案例1:foo
未设置
unset foo
if [[ ${foo+isset} = isset ]]; then
echo "foo is set..."
else
echo "foo is not set..."
fi
运行它会产生
bash -x script.sh
+ unset foo
+ [[ '' = isset ]]
+ echo 'foo is not set...'
foo is not set...
案例2:foo
已设置且为空
$ bash -x script.sh
+ foo=
+ [[ isset = isset ]]
+ echo 'foo is set...'
foo is set...
案例3:foo
已设置且具有有效值
$ bash -x script.sh
+ foo=something
+ [[ isset = isset ]]
+ echo 'foo is set...'
foo is set...
所以基本上,${parameter+word}
所做的是
如果参数未设置或为空,则窗体将扩展为空。如果已设置,则它不会扩展到参数值,而是扩展到可以指定的某些文本:
所以
检查位置参数$1
是否设置为值,在这种情况下,它将被分配一个值x
,如果[-z'x']将失败,则检查,但如果$1
为空,则扩展将如果[-z']
这意味着测试
断言为真。将鼠标悬停在不同的部分上以获得详细的解释
if [ -z ${1+x} ]; then