2014-01-23 15 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