如何为变量赋值并获取单行输出的返回值

时间:2013-03-28 19:04:27

标签: shell if-statement

我的剧本

下面有一行
script_list=`ssh@hostip ls -A /directory 2>/dev/null` 

有没有办法在if条件下使用它,这样我就可以分配script_list变量或者在else条件下处理失败场景

提前致谢

2 个答案:

答案 0 :(得分:1)

您只需检查下一行中的自动变量$?

script_list=$( ssh ... )
rc=$?
if [[ $rc -ne 0 ]]; then
    ...something is wrong...
fi

这是有效的,因为ssh的退出代码是远程运行的命令的退出代码,如果ssh本身可以成功执行。但通常情况下,您并不关心命令链的哪个部分失败,知道任何部分(本地ssh 远程命令失败)都足够了。

答案 1 :(得分:0)

没问题,就这么做吧。赋值完全可以作为一个命令(通过命令我的意思是if之后的事物。)

if asdf=$(echo test1; exit 1); then
    echo "SUCCESS1: $asdf"
fi
if asdf=$(echo test0; exit 0); then
    echo "SUCCESS0: $asdf"
fi