UNIX make中的编码,我写道:
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 :(得分:2)
要检查字符串中是否存在特定子字符串,可以使用“findstring”函数。 更多信息:http://www.gnu.org/software/make/manual/html_node/Text-Functions.html。
答案 1 :(得分:1)
听起来你可能需要这个
cat $ sString | { grep sSubstring || true; } > sResult
See this solution。问题是,当grep
找不到任何内容时,它会返回非零退出代码。 make
会认为这是一个错误。因此,您只需要确保命令始终通过or
返回零退出代码 - 退出代码grep
,退出代码为true
。 true
的退出代码始终为0.