簡體   English   中英

在Bash腳本中運行C程序

[英]Running a C Program in Bash Script

當我在此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 right。 但是我希望該程序的返回值存儲在變量中,例如det

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

要獲取遠程代碼的返回碼或退出碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM