我试图用一些很好的命令行脚本自动化我的工作。我有一个脚本(jenkins_cli.sh
),其与詹金斯服务器进行通信,它看起来像这样:在GIT for Windows bash中使用'xargs'
cd $1
if [ -z ${JENKINS_CREDENTIALS+x} -o -z ${JENKINS_SERVER+x} ]
then
JENKINS_SERVER=$(<jenkins_url.txt)
JENKINS_CREDENTIALS=$(<credentials.txt)
fi
java -jar jenkins-cli.jar -s $JENKINS_SERVER -auth $JENKINS_CREDENTIALS ${@:2}
这工作得很好。
例如,如果我拨打./jenkins_cli.sh localhost/ list-jobs
,我会得到当前在本地Jenkins服务器上运行的任务列表。但是,如果我尝试做一些更花哨(如:./jenkins_cli.sh localhost/ list-jobs | xargs -L1 ./jenkins-cli localhost/ delete-job
我得到以下错误:'RROR: No such job 'test_job
作业test_job
不存在作业'test_job
不存在请问这个角色'
最终在我的命令。?
我猜这与我使用GIT for Windows附带的bash或它如何处理换行符或我如何处理脚本中的参数等事实有关。如果我执行./jenkins_cli.sh localhost/ list-jobs | xargs -L1 echo
我得到预期的结果没有任何引号..我真的不知道如何进一步调试这个问题我有一个解决方案,我只是写作业列表到一个文件,然后读取每一行,并通过我吨至我的自定义脚本,但我真的想与xargs
:)
我忘了提:如果我使用'./jenkins_cli本地主机/删除在职test_job'它删除按预期 – tim