a)可以捕获command1的输出
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
或带有反引号的字符,但不鼓励使用,因为您无法嵌套它们,并且它们可能很难与撇号区分开,具体取决于字体:
output=`cmd1`
b)您可以直接使用管道来代替写入文件,然后读取该文件(或获取输出,然后回显该文件):
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
但是在您的示例中,您对程序的输出不感兴趣,但是对程序的结果感兴趣-它起作用了吗?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
阅读有关&&和||的用法 搜索“快捷方式AND和快捷方式OR”。
为了保持输出整洁,您可以将'diff'的输出重定向到无处:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
为了获得成功并在以后进行评估,请将最后一个命令的结果存储在带有$?的变量中:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac
... > /dev/null
在这种情况下做什么。diff的输出将转到/ dev / null,但这不是什么吗?