在Bash脚本中运行C程序

时间:2013-09-17 12:13:12

标签: c bash

当我在这个bash脚本中运行一个C程序时,它会返回错误。

ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && det=$(./ossec-rootcheck)">/home/sthh/res

错误:

 ./ossec-rootcheck: No such file or directory

我想ssh到远程计算机,然后在其上运行程序。我知道这个文件位于该路径中,因为当我看到它时,它可以正常工作。

ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && ./ossec-rootcheck">/home/sthh/res

echo $1一样,我可以看到cd /home/sth/remote正确。但我希望该程序的返回值存储在变量中,例如det

2 个答案:

答案 0 :(得分:2)

ssh -n -f *.*.*.* "cd /home/sth/remote; echo "$1"; ./ossec-rootcheck || do_your_work">/home/sthh/res

您不必将其存储在变量中。

||如果ossec-rootcheck!= 0

的退出状态,则执行do_your_work

如果您想将数字退出状态存储在变量中,或者回显它,您可以(通过适当的转义):

./ossec-rootcheck; ecode=$?; echo $ecode

答案 1 :(得分:1)

获取远程代码的返回码或退出代码:

ssh -n -f *.*.*.* "cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res

也可以捕获错误:

ssh -n -f *.*.*.* "exec 2>&1; cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res

此外,当您发现它已经正常工作时,您可能需要省略&& echo \"$1\"。你可以使用单引号:

ssh -n -f *.*.*.* 'cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res

或者

ssh -n -f *.*.*.* 'exec 2>&1; cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res