如何在bash中检查管道内容(stdout)是否为空
例如: 我有一个shell脚本,我想检查命令的stdout是否为空。 所以我能做到如何在bash中检查管道内容(stdout)是否为空,bash,Bash,例如: 我有一个shell脚本,我想检查命令的stdout是否为空。 所以我能做到 if [[ $( whateverbin | wc -c) == 0 ]] ; then echo no content fi 但是没有直接的命令来检查这个吗?比如: if whateverbin | checkifstdinisempty ; then echo no content fi ->无输出 [[ `echo something` ]] && echo output fou
if [[ $( whateverbin | wc -c) == 0 ]] ; then
echo no content
fi
但是没有直接的命令来检查这个吗?比如:
if whateverbin | checkifstdinisempty ; then
echo no content
fi
->无输出
[[ `echo something` ]] && echo output found || echo no output
->找到的输出
如果:
if [ `echo` ] ; then echo ouput found; else echo no output; fi
->无输出
[[ `echo something` ]] && echo output found || echo no output
->找到的输出
如果:
if [ `echo` ] ; then echo ouput found; else echo no output; fi
您可以使用测试字符串是否为空:
if [[ -z $(ls) ]]; then echo "ls returned nothing"; fi
在空结果上运行时,将执行分支:
if [[ -z $(cat non-existing-file) ]]; then echo "there was no result"; fi
您可以使用测试字符串是否为空:
if [[ -z $(ls) ]]; then echo "ls returned nothing"; fi
在空结果上运行时,将执行分支:
if [[ -z $(cat non-existing-file) ]]; then echo "there was no result"; fi
试着只读一个字;如果没有输入,读取将失败
if ! whateverbin | IFS= read -n 1; then
echo "No output"
fi
如果读取失败,则整个管道将失败,并且!取消非零退出状态,使整个条件成功。只需读取一个字符;如果没有输入,读取将失败
if ! whateverbin | IFS= read -n 1; then
echo "No output"
fi
如果读取失败,则整个管道将失败,并且!否定非零退出状态,使整个条件成功。可能是-z不起作用,因为命令的输出仅由ASCII NUL字符和换行符组成。请尝试[[-z$printf'\n\0\n']]&&echo EMPTY。问题中的代码正确地将printf输出标识为非空。如果命令的输出仅由ASCII NUL字符和换行符组成,则-z可能不起作用。请尝试[[-z$printf'\n\0\n']]&&echo EMPTY。问题中的代码正确地将printf输出标识为非空。纯echo确实会生成一个换行符输出,问题中的代码可以识别这一点。这种方法无法处理仅由ASCII NUL字符和换行符组成的输出。纯echo确实会生成一个换行符输出,问题中的代码可以识别这一点。这种方法无法处理仅由ASCII NUL字符和换行符组成的输出。