Bash程序不会进入if语句。 (完全初学者)

时间:2013-03-24 00:38:25

标签: bash conditional

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

3 个答案:

答案 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" ]