1

UNIX makeでのコーディング、私は次のように書いています。

cat $ sString | grep sSubstring > sResult

したがって、含まれているかどうかを確認し、sString含まれsSubStringている場合は結果を に入れたいと思いsResultます。

背景: ファイルの内容を入れましたsString-ファイルにsSubStringが存在する場合、.sResultを含むファイルの各行が含まれますsSubString

が にある場合、これは正常に機能sSubStringsStringます。そうでない場合、Error Code 1が表示されます。

どうすればこれを正しく処理できますか? 完全なコードは次のとおりです。

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

(エラーコードでは、私は決して到達しません else 。)

4

2 に答える 2

2

特定の部分文字列が文字列に存在するかどうかを確認するには、'findstring' 関数を使用できます。詳細はこちら: http://www.gnu.org/software/make/manual/html_node/Text-Functions.html

于 2012-10-23T15:36:27.847 に答える
1

これが必要なようですね

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

このソリューションを参照してください。問題は、grepが何も見つからない場合にゼロ以外の終了コードを返すことです。makeエラーだと思います。したがって、の終了コードをのor終了コードで -ing して、コマンドが常にゼロの終了コードを返すことを確認する必要があります。の終了コードは常に 0 です。greptruetrue

于 2012-10-23T15:30:42.090 に答える