Bash
如果 make 做了某事,請檢查 bash
我
make
從 bash 腳本中呼叫。腳本的其餘部分只有在實際做了某事時才需要執行make
(即它沒有說nothing to be done for...
)。我將如何在 bash 中檢查它?返回碼與確實發生(並且不會失敗)時的返回碼相同,因此我不能使用它。有沒有比比較
make
輸出並查看它是否包含更好的方法nothing to be done for
?我正在使用 GNU Make 4.0。
如果您的工作流程可以容納它,您可以
make
在執行它之前發送試執行以更新文件:-q,–問題
‘‘問題模式’’。不要執行任何命令,或列印任何東西;如果指定的目標已經是最新的,則只返回一個退出狀態為零,否則返回非零。
(我有點驚訝這不是
--recon
’s 行為的一部分。)
我相信這會做你想要的。用 GNU grep 測試。
mk_output=$(make) # add whatever make options you use if printf '%s\n' "$mk_output" | grep -qF 'Nothing to be done for' then echo '"Nothing to be done for" was present in output' else echo '"Nothing to be done for" was NOT present in output' fi
我們從 中擷取輸出
make
,然後為您正在尋找的字元串擷取 grep(選項安靜和固定字元串)。如果找到,則退出狀態grep
為0;如果沒有找到,1。事後思考:
make
通常會產生大量輸出,因此最好將第一行更改為:mk_output=$(make (make options) | grep -qF 'Nothing to be done for')
這樣,
mk_output
就不會那麼大了。如果您想在
make
執行時查看輸出並擷取它,請改用tee
擷取到文件:make | tee make_output if grep -qF 'Nothing to be done for' make_output then etc.