在shell脚本中检查if条件中的null或字符值

时间:2014-01-03 00:30:20

标签: shell unix if-statement null sh

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

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

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

1 个答案:

答案 0 :(得分:-1)

你的情况有错字:

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

应该是:

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

你的OR conditio

之前你已经关闭了双方括号

UPDATE 实际解决方案是交换条件的顺序:

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