2012-10-23 57 views
1

編碼UNIX make,我已經寫:檢查使用unix串使

cat $ sString | grep sSubstring > sResult 

所以我要檢查,如果sString包含sSubString,如果是的話,結果放在sResult

背景:我已經把一個文件的內容在sString - 如果sSubString是存在於文件中,然後sResult包含含有sSubString文件的每一行。

sSubString位於sString時,此工作正常。當它不是,我得到Error Code 1

我該如何正確處理?完整的代碼是:

cat $ sString | grep sSubstring > sResult 
if [ -s sResult -gt 0 ];then \ 
(echo "substring present") \ 
else (echo "substring not present") ;fi 

(錯誤代碼,我從來沒有到else

+0

FWIW,我試過其他的[string contains](http://stackoverflow.com/questions/229551/string-contains-in-bash)解決方案,但是這些解決方案在這個* make *文件。 – Wikis

回答

1

聽起來像是你可能需要這個

cat $ sString | { grep sSubstring || true; } > sResult 

See this solution。問題是當grep沒有找到任何內容時,它會返回一個非零的退出代碼。然後make會認爲這是一個錯誤。所以你只需要確保該命令總是返回一個零退出碼or-退出碼grep,退出碼爲truetrue的退出代碼始終爲0.

+0

令人驚歎!這很快,而且完美。非常感謝! – Wikis