2014-01-31 21 views
0

grep函數不能以正確的方式工作。如何在這種情況下使用grep?

這裏是我的代碼:

echo -n "Title: "      # prompt user for title 
read title        # get input from keyboard 
echo -n "Author: "      # prompt user for author 
read author        # get input from keyboard 

if grep -q -i -w $title BookDB.txt  # check for title in BookDB.txt 
    then          # if duplicate exist 
    clear         # clear screen 
    echo "Error! Book already exists!"  # prompt user about duplicated entry 
    echo " "        # newline 
    continue        # display main menu 
    else          # if duplicate absent 
    echo -n "Price: "      # prompt user for price 
    read price        # get input from keyboard 
    echo -n "Qty Available: "    # prompt user for qty available 
    read qtyAvail       # get input from keyboard 
    echo -n "Qty Sold: "     # prompt user for qty sold 
    read qtySold       # get input from keyboard 

的「指環王」是BookDB.txt

如果我想添加新書,將檢查它是否存在一個不是。

但是,如果我想添加「石頭之王」,它說已經存在。 請提供諮詢。

+3

5行是我放棄bash和寫在一個適當的語言,如Python的點。 – Spacedman

回答

2

總是給你的shell變量:

if grep -q -i -w "$title" BookDB.txt 

否則,shell解釋由空格分隔爲不同的參數每個部分。對於grep,這意味着在名爲of,the,StoneBookDB.txt的文件中搜索「Lord」。

+0

感謝您的快速響應! 如果我想刪除BookDB.txt中除「sed -d」之外的圖書的標題,是否還有其他簡單代碼可以刪除? 我還在學習shell腳本。謝謝。 – user3257035

0

最小的解決方案:

#!/bin/bash 
echo -n "Title: "      # prompt user for title 
read title        # get input from keyboard 
if grep -q -i -w "$title" BookDB.txt ; then 
    echo "Found" 
else 
    echo "do something else" 
fi 

與不報$title嘗試看看效果。

另外請注意這將部分匹配,所以「主」會找到「指環王」和「蒼蠅之王」。但你有更大的問題在你前面...