2014-01-23 17 views
0

下面的代碼包含我的代碼的添加功能,根據它需要滿足的簡單事情的需求,我無法完成 - >當書名和作者姓名是被輸入它工作正常,但在UNIX Shell編程 - 庫存程序

的情況下 - >現有標題和不同的作者(它不工作),它需要給輸出作爲「書的名字添加成功」 ,而不是展示,書已經存在] 1

*我有一個txt文件,它存儲了一套書的詳細信息(bookdb.txt)

有人可以幫我解決這個問題。

function add_new_book 
{ 
echo "1) add_new_book" 
    echo -n "Title :" 
     read title 
    echo -n "Author :" 
     read author 
    echo -n "Price :" 
     read price 
    echo -n "Qty Available : " 
     read available 
    echo -n "Qty Sold : " 
     read sold 
      grep "$title" BookDB.txt >/dev/null 2>&1 
       rc=$? 
if [[ "$rc" != 0 ]]; then 
     echo $title:$author:$price:$available:$sold >> BookDB.txt 

    echo $BookDB "New book title ' $title ' added successfully " 
    else 
     echo "The book $title already exists." 
fi 

} 

回答

0

所以,你應該爲grep 「唯一密鑰」 $標題:$作者:

grep "^$title:$author:" BookDB.txt >/dev/null 2>&1 
if [ "$?" != "0" ] 
then 
    echo $title:$author:$price:$available:$sold >> BookDB.txt 
    echo $BookDB "New book title ' $title ' added successfully " 
else 
    echo "The book $title already exists." 
fi 
1

我不知道如果我明白你的問題是正確的。如果你想剿中的標題和作者日期是相同的情況下重複,但允許同一名稱不同作者或其他方式輪的組合,我建議grep命令更改爲:

grep ".*$title.*$author" BookDB.txt >/dev/null 2>&1 

只有兩個,標題和作者被發現在你的一個DB行中,該書被拒絕。

[email protected] ~/test $ ./test.sh 
1) add_new_book 
Title :test 
Author :aaa 
Price :12 
Qty Available : 12 
Qty Sold : 12 
New book title ' test ' added successfully 
[email protected] ~/test $ ./test.sh 
1) add_new_book 
Title :test 
Author :aaa 
Price :12 
Qty Available : 12 
Qty Sold : 12 
The book test already exists. 
[email protected] ~/test $ ./test.sh 
1) add_new_book 
Title :test 
Author :abc 
Price :12 
Qty Available : 12 
Qty Sold : 12 
New book title ' test ' added successfully 
+0

所有正確,但注意''。* $ title。* $ author「'。這種模式可能會匹配不需要的密鑰。 – PeterMmm