Jenkins:在bash脚本中插入特殊字符

时间:2011-10-19 13:20:34

标签: linux bash shell hudson jenkins

我在里面执行一个bash脚本。执行时这样的命令

current_loc=/tmp/$BUILDTYPE
rm -rf $current_loc/*
[ -d $current_loc/ ] || mkdir -p $current_loc

替换为

+ current_loc=$'/tmp/stage\r'
+ rm -rf '/tmp/stage
/*
'
+ '[' -d $'/tmp/stage\r/' ']'
+ mkdir -p $'/tmp/stage\r\r'

dollar quoting\r正在造成严重破坏。我该如何解决?

2 个答案:

答案 0 :(得分:0)

您必须使用

之类的命令替换'\ r'符号

BULDTYPE=$(echo $BULDTYPE | tr -d '\r');

答案 1 :(得分:0)

有几种方法可以在Jenkins中运行 BASH 脚本。方法#1是创建一个bash脚本,让Jenkins在构建过程中执行它。但是,您也可以直接在Jenkins中键入BASH脚本。你是这样做的?

我怀疑你是否在Windows上使用记事本编写了shell脚本,然后在Unix或Cygwin安装上执行它,该安装设置为采用Unix行结尾。您看到的\r就在您的shell脚本中。

您可以使用程序编辑器重新编写脚本,然后将行结尾设置为Unix行结尾。在VIM中,您可以通过以下方式执行此操作:

:set ff=unix

在命令模式下。

如果您在Windows上使用Notepad++(免费下载和开源),请选择Edit->EOL Conversion->Unix菜单项。 (或者您可以使用Vim

您可以运行大多数Unix和Linux安装所具有的dos2unix实用程序,但我仍然会在程序编辑器中查看该脚本。

请勿使用非程序编辑器编辑程序。我见过人们使用Winpad而忘记将脚本保存为 Text 。相反,他们以RTF格式创建一个shell脚本。 RTF格式使Unix BASH shell难过。