我的shell脚本长这样:
#!/bin/bash
USER=$1
sudo rm -rf /home/$USER/system/logs/*
exit 0
它已经在shell文件夹中提交到cvs,Jenkins通过“执行Shell”构建步骤配置为在Linux机器上执行该作业:
bash -ex shell/clear-logs.sh myuser
但是Jenkins将整个sudo行用单引号括起来,这导致我的日志文件未被删除(尽管Jenkins作业成功通过):
然而,Jenkins将整条sudo命令使用单引号包含在内,这会导致我的日志文件没有被删除(虽然Jenkins作业成功通过):
[workspace] $ /bin/sh -xe /tmp/hudson7785398405733321556.sh
+ bash -ex shell/clear-logs.sh myuser
+ USER=myuser
+ sudo rm -rf '/home/myuser/system/logs/*'
+ exit 0
有什么想法可以解决 Jenkins 出现这种情况的原因吗?如果我以 root 用户身份从 Jenkins 工作空间位置调用脚本,则它可以正常工作。
编辑:
我在同一台 Linux 服务器上,由 Jenkins 执行不同的 CVS 模块中具有相同 Shell 脚本。已创建一个新任务,无论是自由风格还是通过复制此功能正常的现有任务,但没有任何区别。