我正在尝试连接到主机并使用以下命令运行netstat命令:
NET_STAT=$(ssh $hostname netstat -an 2>&1)
if [ $? -ne 0 ]; then
echo “error occurred”
因此要检查命令是否成功,我使用“$?”。 但问题是命令是失败还是成功$?始终为0.我认为这是因为命令的第二部分(2>& 1)总是成功,所以我得到0。
有没有办法让返回代码为非零,这样我才能区分成功和失败。并且还在NET_STAT中获得正确的o / p。
以下是一个例子:
主机名= 1.2.3.4
NET_STAT = $(ssh $ hostname netstat -an 2>& 1)
echo" err的值是$ NET_STAT"
回复" ret val的价值是$?"输出
======
错误的val是ssh:1.2.3.4:节点名称或 服务名称未知
ret val的值为0
答案 0 :(得分:0)
为什么不直接检查$ NET_STAT以确认netstat命令是否有效:
if echo $NET_STAT | grep "^Active" > /dev/null
then
echo "All ok"
else
echo "not ok"
fi