我正在尝试捕获远程SSH脚本的退出代码:
ssh remoteuser@server"
exit_on_error() {
exit_code=$1
if [ "$exit_code" -ne "0" ]; then
>&2 "echo command failed with exit code ${exit_code}."
fi
echo "exit_code is $exit_code"
}
ls -la blah
exit_on_error $? !!
"
我得到的是:
ls:无法访问等等:没有这样的文件或目录
bash:第3行:[:-ne:期望一元运算符
退出码是
blah
当然不存在。我只是想捕获该命令的退出代码。我以为是本地变量与远程变量扩展,所以我尝试转义$ 1等,但无济于事。我尝试将其全部放在bash --login -c
块中,但没有任何变化。
有什么想法我要去哪里吗?
这不起作用,因为在将字符串发送到服务器之前,变量已由bash解析。您可以通过使用单引号将发送的代码包装起来,或使用typeset
在服务器上创建函数来省略此设置。注意,后一个选项仍然需要转义直接在字符串中使用的变量。]>
单引号: