Shell-Script
測試上述管道是否產生輸出的標準/規範方法?
我想到的情況有以下結構:
% some_command | [PRODUCED OUTPUT] || echo 'no output' >&2
這裡
[PRODUCED OUTPUT]
代表一些尚未指定的測試命令,其值應該是true
(即“成功”)當且僅some_command
產生任何輸出。當然,
some_command
它代表任意複雜的管道,同樣,它代表在沒有輸出echo 'no output' >&2
的情況下要執行的一些任意操作。some_command
是否有標準測試來完成上述工作
[PRODUCED OUTPUT]
?grep -qm1 '.'
接近但也會在包含空行的輸入上報告錯誤。與檢查管道是否為空並在數據不是時對數據執行命令不同,我只想丟棄輸入(如果存在),我不需要保留它。
怎麼用
read
?$ cat /dev/null | read pointless || echo no output no output $ echo something | read pointless || echo no output $ printf "\n" | read pointless || echo no output $ printf " \n" | read pointless || echo no output $ false | read pointless || echo no output no output
根據開放組定義:
退出狀態
應返回以下退出值:
0
順利完成。
>0
檢測到文件結束或發生錯誤。
對我來說工作得很好
| read -n 1
。$ echo 'faw' | read -n 1 || echo 'no output' $ echo | read -n 1 || echo 'no output' $ printf '' | read -n 1 || echo 'no output' no output $ false | read -n 1 || echo 'no output' no output $