Shell 测试涉及管道的命令是否成功
测试df和awk命令在以下命令中是否成功的最佳方法是什么?使用SolarisShell 测试涉及管道的命令是否成功,shell,scripting,pipe,solaris,Shell,Scripting,Pipe,Solaris,测试df和awk命令在以下命令中是否成功的最佳方法是什么?使用Solaris df-h/myloc*|awk'{if($5>80)print$6}>somelog一种简单的方法是将它们拆分,以便存储第一个输出并检查两个退出状态的连接: if OUT1=$(df -h /myloc*) && echo ${OUT1} | awk '{ if ( $5 > 80 ) print $6}' > somelog; then echo "success" else e
df-h/myloc*|awk'{if($5>80)print$6}>somelog
一种简单的方法是将它们拆分,以便存储第一个输出并检查两个退出状态的连接:
if OUT1=$(df -h /myloc*) && echo ${OUT1} | awk '{ if ( $5 > 80 ) print $6}' > somelog; then
echo "success"
else
echo "failure"
fi
一种简单的方法是拆分它们,以便存储第一个输出并检查两个退出状态的组合:
if OUT1=$(df -h /myloc*) && echo ${OUT1} | awk '{ if ( $5 > 80 ) print $6}' > somelog; then
echo "success"
else
echo "failure"
fi
您应该使用
pipefail
选项(Solaris上的默认shellksh
也支持该选项):
您可以将该选项本地化为子shell:
if (set -o pipefail; false | true); then echo ok; else echo failed; fi
(用相应的命令替换
false
和true
)您应该使用pipefail
选项(Solaris上的默认shellksh
也支持该选项):
您可以将该选项本地化为子shell:
if (set -o pipefail; false | true); then echo ok; else echo failed; fi
(用各自的命令替换
false
和true
)我认为if语句需要方括号,但您的示例没有方括号,而且确实有效。这是一个启示!我认为if语句需要方括号,但您的示例没有方括号,而且确实可以工作。这是一个启示!