检查外壳脚本中 if 条件中的空值或字符值



我正在尝试组合两个检查字符值或空值的条件。 由于某种原因,它们只能单独工作,当我尝试将它们组合成"或"时,它会给我错误。 我错过了什么吗?

RETENTION= #either a character value or null value
if [[ "$RETENTION" == +([a-zA-Z]) ]] || [ -z "$RETENTION"] ; then
 #bad input
 #exit 1

使用 ELIF 单独执行此操作也不起作用。 只有一个条件有效。

您的病情有拼写错误:

if [[ "$RETENTION" == +([a-zA-Z]) ]] || [ -z "$RETENTION" ] ; then

应该是:

if [[ "$RETENTION" == +([a-zA-Z]) ]] || [ -z "$RETENTION" ] ; then

您在手术室条件之前关闭了双方括号

更新实际解决是交换条件的顺序:

if [ -z "$RETENTION" ] || [[ "$RETENTION" == +([a-zA-Z]) ]]  ; then

最新更新