以下是条件: exitprocess() { case $1 in "0") echo "连接 DB 或执行 DML 语句时出错" exit 0 ;; "1") echo "组号应为 FULL 或介于 1-64 之间" exit 1 ;; }
TI_Validate() { if [[ ${grp_no} -le "0" || ${grp_no} -ge "65" || ${grp_no} != "full" ]] 然后退出进程 1 fi }
主要的
grp_no=$1
echo "组号是" ${grp_no} TI_Validate
如果 grp_no 高于 65 或 grp_no 低于 0 或 grp_no 未“满”,则上述条件应导致退出进程 1
但下面是正在发生的事情:
./TI_Script_Wrapper1.sh 完整
输出:在主组中 no 已满 组号应为 FULL 或介于 1-64 之间
即使我输入正确的值,它也会退出。你能帮我简化一下吗?
答案1
您的 if 语句条件末尾缺少一个空格...
... ${grp_no} != "full"]]
应该
... ${grp_no} != "full" ]]
”
注意和之间的空格]]
。
答案2
下面的事情能解决您的目的吗?
$ grp_no=67
$ if [[ (${grp_no} -le 0 || ${grp_no} -ge 65) && ${grp_no} != "full" ]]; then echo ${grp_no}; fi
67
$ grp_no=-1
$ if [[ (${grp_no} -le 0 || ${grp_no} -ge 65) && ${grp_no} != "full" ]]; then echo ${grp_no}; fi
-1
$ grp_no="full"
$ if [[ (${grp_no} -le 0 || ${grp_no} -ge 65) && ${grp_no} != "full" ]]; then echo ${grp_no}; fi
$ grp_no=2
$ if [[ (${grp_no} -le 0 || ${grp_no} -ge 65) && ${grp_no} != "full" ]]; then echo ${grp_no}; fi
$