Shell-Script

測試上述管道是否產生輸出的標準/規範方法?

  • November 16, 2018

我想到的情況有以下結構:

% 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
$

引用自:https://unix.stackexchange.com/questions/276199