这个shell脚本做什么?
我不确定这些“-z”和“-n”在这里做什么?这个shell脚本做什么?,shell,scripting,Shell,Scripting,我不确定这些“-z”和“-n”在这里做什么?-z用于测试字符串是否为空 -n正好相反。将为您解释任何一行shell[-z$INV\u NAME]或[-n$PRO\u NAME]可以在那里使用。顺便说一句,使用true和false字符串作为条件是非常糟糕的做法。这样做的代码通常也会执行类似以下操作:if$FROM_PROJECT;然后…,从而执行半任意代码执行(如果可以为变量的内容指定任意值,则添加安全性检查需要检查的内容)。相反,使用空/非空状态来进行布尔确定。(也可以很容易地使用0和1作为布尔
-z
用于测试字符串是否为空
-n
正好相反。将为您解释任何一行shell<代码>[-z$INV\u NAME]或[-n$PRO\u NAME]
可以在那里使用。顺便说一句,使用true
和false
字符串作为条件是非常糟糕的做法。这样做的代码通常也会执行类似以下操作:if$FROM_PROJECT;然后…
,从而执行半任意代码执行(如果可以为变量的内容指定任意值,则添加安全性检查需要检查的内容)。相反,使用空/非空状态来进行布尔确定。(也可以很容易地使用0
和1
作为布尔值;if((some_值))
将是真实的,如果some_值
持有正整数值,或者变量名称本身持有正整数值)。@CharlesDuffy-仅供参考,在[[-z$INV_NAME]]
解析错误!意外的标记'-z'(位置3)”注释中也会出现barfs
FROM_PROJECT=false
if [[ -z $INV_NAME ]]; then
if [[ -z $PRO_NAME ]]; then
echo "error: variable not set" >&2
exit 1
elif [[ -z $INV_FILE ]]; then
echo "error: variable INV not set" >&2
exit 1
fi
FROM_PRO=true
elif [[ -n $PRO_NAME ]] || [[ -n $INV_FILE ]]; then
echo "error: variable INV_NAME is not compatible with PRO_NAME and INVENTORY_FILE" >&2
exit 1