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方法是将退出代码grep的退出代码与true. 的退出代码true始终为 0。

于 2012-10-23T15:30:42.090 回答