Bash 远程SSH会话上的退出代码
我正在尝试捕获远程SSH脚本的退出代码:Bash 远程SSH会话上的退出代码,bash,ssh,exit-code,Bash,Ssh,Exit Code,我正在尝试捕获远程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}."
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:无法访问blah:没有这样的文件或目录
bash:第3行:[:-ne:应为一元运算符
退出代码为
blah
当然不存在。我只是试图捕获该命令的退出代码。我以为是本地变量对远程变量的扩展,所以我尝试转义$1等等,但没有效果。我尝试将其全部放在bash--login-c
块中,但没有更改
知道我哪里出错了吗?它不起作用,因为变量是在字符串发送到服务器之前由bash解析的。您可以通过使用单引号来包装代码发送,或者在服务器上创建带有
排版的函数来忽略这一点。请注意,后一个选项仍然需要直接转义变量他被绳子缠住了
单引号:
$sshuser@server '
函数退出时出错{[$1-eq 0]| | echo“error”}
这是一个没有文本的文件吗
是否在错误$时退出?
'
创建命令:
!/bin/bash
函数退出时出错{
[1美元-等式0]| |回声“错误”;
}
sshuser@server "
$(排版-f退出时出错)
这是一个没有文本的文件吗
退出错误\$?
"
出口0
请参见:这太简单了。@MarkPlotnick这应该是答案:)!!
应该做什么?退出时出错
没有查看它的任何其他参数。@chepner哦,对不起:我上面粘贴的是非常精简的版本。!!正在捕获最后一个命令。我正在将它添加到giv的echo语句中e更多信息。顺便说一句,如果您想远程使用局部变量,请将双引号括在一个单引号中:“'$STOP'