0

私は Bourne Shell Script で学生データベースを構築していますが、このように記述されたコードを見たのはこれが文字通り初めてなので、私は非常に私の要素から外れています。ユーザーがコースを入力すると、プログラムがユーザー入力と既に持っているコースのデータベースをチェックし、コースが存在しない場合は、ユーザーに新しいコースを入力するように促すようにする必要があります。これは私がしようとしているものです:

   echo "course-1: \c"
   read course1
   while [[ grep -i "$course1" course3.dat == 1]]
   do
        echo "course does not exist"
        echo "course-1: \c"
        read course1  
   done
   echo "course-2: \c"
   read course2
   while [[ grep -i "$course2" course3.dat == 1]]
   do
        echo "course does not exist"
        echo "course-2: \c"
        read course2
   done

しかし、「条件付き二項演算子が必要です」および「「-i」付近の構文エラー」というエラーが発生します。私は答えをグーグルで検索しようとしましたが、役に立つものは何も思いつきません。それで、あなたの誰かが私を助けることができるかどうか疑問に思っていましたか?本当にありがとう。

4

2 に答える 2

2

[[のショートカットですが/bin/test、これはあなたが望むものではありません。(これについてのmanページがあります。)

代わりにこれを試してください:

while ! grep -i "$course1" course3.dat

または

until grep -i "$course1" course3.dat

grepgrep が成功した場合 (つまり、行が一致した場合)、式は true と評価され、! それを反転します。until は while とは逆のセマンティクスを組み込んでいます。

于 2013-03-28T03:20:25.287 に答える