2017-04-11 37 views
-1

修改程序,以便如果找不到匹配的名稱,將顯示一條消息:「名稱'xyz'不在目錄中」。您可以使用'if'語句來檢查$的值嗎?看看grep命令是否成功(記住'0'表示成功)。如果grep不成功,則回顯消息(其中包含$ name的值)。LINUX的IF語句

原始代碼是:

#!/bin/bash 

name=$1 

if [ "$name" = "" ] 
then echo -n "Enter a name to search for: " 

read name 

fi 

grep -I $name ~uli101/2017a/phonebook 

我基本上已經插入和IF語句轉換成使用上述說明的程序。我試過很多不同的東西,如:

if [ $? = 1 ] 
then echo -n "Name 'xyz' not in directory" 
fi 

但它不接受答案。請幫我解決這個問題。任何幫助表示讚賞。

回答

0

這是爲我工作,嘗試:

#!/bin/bash 

name=$1 

if [ "$name" = "" ]; then 
    echo -n "Enter a name to search for: " 

    read name 
fi 

grep -I $name phonebook 

if [ $? = 1 ]; then 
    echo "Name '${name}' not in directory" 
fi 

,或者到你可以改變最後:

grep -I $name phonebook && echo -n "Name not in directory" 
+0

我也試過,但它說這是不正確的 –

+0

問題:誰說這是不正確的? –

+0

@KyleMathews我修改了答案,再試一次 –

0

試試這個,它爲我工作。

#!/bin/bash 
# 

NAME=$1 

if [ -z "${NAME}" ]; then 
    echo -n "Enter a name to search for: " 
    read NAME 
fi 

grep -I $NAME~uli101/2017a/phonebook