2013-06-19 78 views
2

我正在寫一篇相當長的腳本(或者我會考慮冗長的 - 你可能會在幾個小時內完成)。我基本上有一個文件(名爲.restore.info),其中包含名稱的文件。在腳本的一部分中,我想測試「如果在.restore.info中找不到文件名,然後說」錯誤:恢復的文件不存在「。如果這對你們沒有意義(對我來說,它確實在事物的宏偉計劃),所以,如果在命令行中輸入:。需要一些幫助在UNIX bash腳本中編寫if語句

sh MYSCRIPT filename 

它將搜索在.restore.info文件中的字符串的文件名,如果不能找到任何東西,它應該產生錯誤消息。

基本上,我需要的這頂線路編碼轉換爲UNIX的bash聲明,事,其實是有道理的!:

If grep $1 .restore.info returns an exist status of 1; then 
    echo 「Filename does not exist!」 
fi 

在此先感謝!請問我是否需要我更清楚地澄清任何事情,因爲我知道我不是最好的解釋者,我會在不到一分鐘的時間內回覆你! (+當然代表和最好的答案將給予!)

回答

2

你可能只關心grep退出與非0狀態:

if ! grep -q "$1" .restore.info; then 
    echo "Filename does not exist!" 
fi 

但是如果你真的關心一個特定的退出狀態(1,在這種情況下):

if ! grep -q "$1" .restore.info && [[ $? -eq 1 ]]; then 
    echo "Filename does not exist!" 
fi 
+0

非常感謝!我希望我能和你們一樣好! – DeaIss

0

使用grep -q

grep -q "filename" .restore.info && echo "found match" 

! grep -q "filename" .restore.info && echo "not found" 
+1

你不想把'grep'內'$()' – Barmar

+0

@Barmar:謝謝,糾正。 – anubhava

0
grep -l 'filename' .restore.info 
if [ $? = 0 ];then 
    echo "found it" 
else 
    echo "not found" 
fi