0

我正在尝试从 Jenkins Execute shell SSH 进入机器,检查机器上是否存在文件,如果存在则使 shell 失败。我有以下代码但是我似乎可以让詹金斯认识到 echo 的输出是“是”或否“请让我知道你的想法......

sshpass -p ${ServerNodePw} ssh -T -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${ServerNodeUser}@${ServerNodeIP} << EOSSH

(ls /Volumes/ServerHD/Users/username/Desktop/JenkinsVMbuild.lock && echo yes) || echo no
2>/dev/null 1>/dev/null
echo "$?"
if [ "$?" = yes ]
then
  echo "File found"
  exit 1
  currentBuild.result = 'FAILURE'
else
  echo "File not found"
fi

EOSSH
4

1 回答 1

0

的值$?是最后执行的命令(或管道)的退出状态。在您的情况下,它总是会扩展为0.

如果要将回显的字符串存储在变量中,则可以使用命令替换。

您还需要正确转义(或引用)此处文档中的脚本。否则$var将在将脚本传递ssh.

于 2021-09-03T08:51:21.137 回答