Linux
查找:不存在文件時如何不出現錯誤(stderr)
我有一個自定義腳本,當它們一天前 gzip 日誌文件。在我的腳本中,所有錯誤(stderr)都記錄到一個文件中,在腳本的最後,我使用這個文件來了解它的執行是否良好。
我的這部分程式碼看起來像
# redirection of stderr to file exec 2> /tmp/errors.txt # gzip old log files find *.log -mtime +1|xargs gzip -f # test if error log file is empty if [ -s /tmp/errors.txt ]; then ..... fi
我的問題是:如果至少有一個要 gzip 的文件,則此程式碼效果很好,但如果沒有,它會在我不想這樣做時引發錯誤。
我嘗試了不同的解決方案來解決這個問題,但沒有成功。
有誰知道如何解決這個問題?
試試這個
#redirect stderr to null exec 2> /dev/null FILECOUNT = `find *.log -mtime +1|wc -l` #redirection of stderr to file exec 2> /tmp/errors.txt # gzip old log files if [ $FILECOUNT != '0' ]; then find *.log -mtime +1|xargs gzip -f fi # test if error log file is empty if [ -s /tmp/errors.txt ]; then ..... fi`
如果您使用的是 GNU 版本的 xargs,您可以使用
-r
:--no-run-if-empty -r If the standard input does not contain any nonblanks, do not run the command. Normally, the command is run once even if there is no input. This option is a GNU extension.
程式碼:
# redirection of stderr to file exec 2> /tmp/errors.txt # gzip old log files find *.log -mtime +1|xargs -r gzip -f # test if error log file is empty if [ -s /tmp/errors.txt ]; then ..... fi