在shell脚本中的if条件中检查null值或字符值
我试图结合两个条件来检查字符值或空值。由于某些原因,它们只能单独工作,当我试图以“或”的形式将它们组合在一起时,会产生错误。我错过什么了吗在shell脚本中的if条件中检查null值或字符值,shell,unix,if-statement,null,sh,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也不起作用。只有一个条件有效。您的条件中有一个输入错误: 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
你犯了什么错误?另外,在
之后您有什么问题?我在尝试更正行时出错。我收到这条消息shellscript.sh[161]:0403-057第161行的语法错误:`]'不是预期的。我无法实际测试它,但括号看起来并没有正确平衡。试着把这两个条件都用双方括号括起来,在它们之间加上或。我翻转了这两个条件,它似乎起作用了。[-z“$RETENTION”]|[[“$RETENTION”==+([a-zA-z])]感谢您的帮助打字错误代码和“应该”代码之间没有区别!