0

有人可以帮我更正这段代码。我不明白为什么它不会运行我的条件语句。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"
4

3 回答 3

2

您需要尊重 , 之前和之后的[空格]

if [ $input -eq $j ]

# and

if [ $testVar -eq 0 ]
于 2013-03-24T00:40:36.917 回答
1

[ 和 ] 周围必须有空格,将它们视为保留字,例如 fi 或 if。在 bash 中,它们是内置的 shell。

于 2013-03-24T00:41:18.330 回答
0

@sudo_O 是正确的,你应该包括什么courseName

但是,在我看来,您在比较$inputand时使用了错误的运算符$j-eq是算术运算符,而运算符=用于比较字符串。

尝试:

if [ "$input" = "$j" ]
于 2013-03-24T01:12:22.883 回答