从从机上运行的脚本返回一个值

从从机上运行的脚本返回一个值

我有一个脚本(在我的本地计算机上)。在脚本中,通过 ssh 与从机建立连接,并在从机上运行构建脚本:

ssh $user@$slave_ip bash $dest_root/$dest_dir/slave_run

有没有办法捕获从父脚本变量中的slave_run 脚本返回的退出代码?

答案1

您的命令(添加双引号):

ssh "$user@$slave_ip" bash "$dest_root/$dest_dir/slave_run"

$?执行该命令后将捕获退出代码。

例子:

$ ssh someserver sh -c 'false'
$ echo $?
1

要捕获它:

$ ssh someserver somecommand
$ code=$?

或者,在服务器上获取命令以输出退出代码并将其捕获为字符串:

$ code=$( ssh server sh -c "somecommand; echo \$?" )

在你的情况下:

$ code=$( ssh "$user@$slave_ip" sh -c "$dest_root/$dest_dir/slave_run; echo \$?" )

有必要转义$of,$?因为命令位于双引号内,并且我们希望$?由服务器端的 shell 进行评估,而不是由客户端的 shell 进行评估。

答案2

要检查退出代码,您需要检查一个特殊变量“$?”该变量告诉您​​最后运行的命令的退出代码。

ssh $user@$slave_ip 'bash $dest_root/$dest_dir/slave_run ; echo $?'

相关内容