我是 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 …