如何选择多个退出

如何选择多个退出

我是 bash 脚本新手,我不明白脚本的这个特定部分出了什么问题。我试图选择我的脚本中的所有出口。并试图设置一个条件,如果所有这些条件均不满足,则其无效,否则其有效。

if [[ `echo $?` -ne {0..4} ]]
then
         echo "Its a Valid Date."
 else
         echo " Not valid date."
fi

当我运行它时,我得到:

kpatel138@matrix:~/Lab2> ./cal2 1994 5 4
./cal2: line 40: unexpected argument `(' to conditional binary operator
./cal2: line 40: syntax error near `(0'
./cal2: line 40: `if [[ `echo $?` -ne (0..4) ]]'

答案1

`echo $?`是一种复杂的写作方式$?。当有明显更简单的方法时,不要以复杂的方式做事。

我认为您想测试是否$?是值 0、1、2、3 或 4 之一。您使用的语法没有意义。您可以测试所有五个相等情况:

if [[ $? -eq 0 || $? -eq 1 || $? -eq 2 || $? -eq 3 || $? -eq 4 ]]; then …

但这过于冗长。由于您希望允许范围为 0–4,因此请测试该值$?是否大于最小值且小于最大值。

if [[ $? -ge 0 && $? -le 4 ]]; then …

$?永远不会是负面的,所以测试$? -ge 0是多余的。因此:

if [[ $? -le 4 ]]; then …

这也可以使用算术表达式来编写。请注意,运算符是不同的:括号中的条件结构使用-eq-ne-le-ge-lt-gt比较整数,而算术表达式具有类似 C 的语法。

if (($? <= 4)); then …

相关内容