0

誰かがこのコードを修正するのを手伝ってくれますか? 条件文が実行されない理由がわかりません。for ループは、入力が配列内のどの項目とも等しくないことを確認することになっています。if は、最後の 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 では、それらはシェルに組み込まれています。

于 2013-03-24T00:41:18.330 に答える
0

@sudo_Oは正しいです。何courseNameが含まれているかを含める必要があります。

$inputただし、 andを比較するために間違った演算子を使用しているように見えます$j。は-eq算術演算子ですが、=演算子は文字列の比較に使用されます。

試す:

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