是否可以使用bash从shell执行命令,如果它返回某个值(或空值),执行一个命令?
if [ "echo test" == "test"]; then
echo "echo test outputs test on shell"
fi
答案 0 :(得分:6)
是的,您可以使用反引号或$()
语法:
if [ $(echo test) = "test" ] ; then
echo "Got it"
fi
您应该将$(echo test)
替换为
"`echo test`"
或
"$(echo test)"
如果您运行的命令的输出可以为空。
POSIX“stings相等”test
运算符为=
。
答案 1 :(得分:4)
这样的事情?
#!/bin/bash
EXPECTED="hello world"
OUTPUT=$(echo "hello world!!!!")
OK="$?" # return value of prev command (echo 'hellow world!!!!')
if [ "$OK" -eq 0 ];then
if [ "$OUTPUT" = "$EXPECTED" ];then
echo "success!"
else
echo "output was: $OUTPUT, not $EXPECTED"
fi
else
echo "return value $OK (not ok)"
fi
答案 2 :(得分:1)
您可以查看上一个程序的exit_code
,如:
someprogram
id [[ $? -eq 0 ]] ; then
someotherprogram
fi
注意,通常0
退出代码表示成功完成。
你可以做得更短:
someprogram && someotherprogram
如果someotherprogram
成功完成,则只执行上述someprogram
。或者,如果您想测试不成功的退出:
someprogram || someotherprogram
HTH
答案 3 :(得分:1)
在$(和)或反引号(`)之间放置命令会将该表达式替换为命令的返回值。所以基本上:
if [ `echo test` == "test"]; then
echo "echo test outputs test on shell"
fi
或
if [ $(echo test) == "test"]; then
echo "echo test outputs test on shell"
fi
会做到这一点。