如何在外壳脚本中捕获局部和远程 shell 变量



我正在尝试使用 ssh 在远程主机上执行命令。在这里,我需要在该远程主机上捕获该远程命令的退出代码,同时我需要捕获我的 ssh 命令的退出代码。如何从同一命令捕获局部和远程 shell 变量?

基本上要求是:

ssh user@remotehost "/etc/stop_database; echo $?"

根据我的 ssh 命令的返回代码,我需要执行一些操作。

if [ $? -ne 0 ]; then
echo ssh failed
else
echo ssh success
fi

同样基于该主机中远程命令的退出代码,我需要执行以下操作:

if database_stopped; then
echo DB stopped successfully
else
echo Unable to stop DB
fi

如果stop_database不产生任何输出或被重定向,则可以将远程echo $?捕获到脚本 var 并访问 ssh 退出代码; 在此模拟示例中,"ssh yadda ..."被替换为本地内容:

#!/bin/bash
rmt_sd=$(echo 23; exit 46)
ssh_ec=$?
echo rmt_sd $rmt_sd, ssh_ec $ssh_ec

最新更新