如果命令没有返回任何内容,则在csh shell中将语句打印/回显给STDOUT

时间:2015-09-23 15:18:28

标签: unix printing null stdout tcsh

我在文件中找到一个单词/模式,如果文件中不存在这样的模式,那么我想打印/ echo“ - ”。我们可以在命令行中使用单个内联命令执行此操作吗?

grep word <file> | <command to return "-" if "word" not present in file> 

同样,如果脚本没有返回任何内容,则回显“ - ”

python script.py | <command to return "-" if script returns nothing/NULL

2 个答案:

答案 0 :(得分:1)

如果要检查命令没有输出而不管其返回码如何,那么你应该检查没有输出,其中一种方法是:

 awk '{print} END {if (NR == 0) print "-"}'

例如:

$ grep - /dev/null | awk '{print} END {if (NR == 0) print "-"}'
-
$ echo some output | awk '{print} END {if (NR == 0) print "-"}'
some output

答案 1 :(得分:0)

这可以通过以下命令来完成:

grep word file.txt ||  echo "-"

如果文件中存在单词,则会从文件中打印该行,否则将打印-

如果命令是脚本,那么:

ret=`python script.py`; if [[ "$ret" ]];then echo "$ret"; else echo "-"; fi