有人可以帮我纠正这段代码吗?我不明白为什么它不会运行我的条件语句。 for循环应该确保输入不等于数组中的任何项。如果检查出它假设运行最后一个if语句,但它不是。
echo "Enter a Course Number"
read input
declare -i testVar=0
for j in "${courseName[@]}"
do
if [$input -eq $j]
then
testVar=1
echo "Course Already Exists"
sleep 2
fi
done
if [$testVar -eq 0]
then
echo "successful"
答案 0 :(得分:2)
您需要尊重[
之前和之后的空白,]
:
if [ $input -eq $j ]
# and
if [ $testVar -eq 0 ]
答案 1 :(得分:1)
[和]必须在它们周围留出空格,将它们视为保留字,例如如果。在bash中,它们是内置的shell。
答案 2 :(得分:0)
@sudo_O是正确的,您应该包含courseName
的内容。
但是,在我看来,您使用错误的运算符来比较$input
和$j
。
-eq
是算术运算符,而=
运算符用于比较字符串。
尝试:
if [ "$input" = "$j" ]