2013-03-28 98 views
0

我在Bourne Shell腳本中構建了一個學生數據庫,這實際上是我第一次看到這樣的代碼,所以我非常失望我的元素。我需要這樣做,以便當用戶輸入課程時,程序將檢查用戶輸入與已有課程的數據庫,如果課程不存在,則提示用戶輸入新課程。這就是我想:在Bourne Shell腳本中同時使用While和Grep

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」語法錯誤」。我一直在試圖谷歌的答案,但我沒有提出任何有用的東西。所以我想知道你們有沒有人可以幫助我?非常感謝。

回答

2

[[/bin/test的快捷方式,這不是你想要的。 (這裏有一個man page一下吧。)

試試這個:

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

或者

until grep -i "$course1" course3.dat 

grep表達式的值爲true時的grep成功(即匹配行),以及!顛倒了。直到從相反的語義構建而來。

+0

是的,工作。謝謝。我不知道爲什麼我認爲我需要[] - .-謝謝 – Josephine 2013-03-28 03:28:29

1

[[[是「測試」,其中你想要什麼。

但是,不同的shell有不同的語法; ksh或bash會解釋「[[」好吧,但是Bourne shell(通常是/ bin/sh)不會。