Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 詹金斯:在bash脚本中插入特殊角色_Linux_Bash_Shell_Hudson_Jenkins - Fatal编程技术网

Linux 詹金斯:在bash脚本中插入特殊角色

Linux 詹金斯:在bash脚本中插入特殊角色,linux,bash,shell,hudson,jenkins,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' 美元报价和\r

我在里面执行一个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'

美元
报价
\r
正在制造混乱。我该如何解决这个问题

必须用类似命令的命令替换“\r”符号


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

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

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

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

:set ff=unix
在命令模式下

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

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


请勿使用非程序编辑器编辑程序。我见过有人使用Winpad而忘记将脚本保存为文本。相反,它们创建RTF格式的shell脚本。RTF格式让Unix BASH shell很伤心。

我猜您在
current\r\n=/tmp/$BUILDTYPE
…mkdir-p>中使用了“\r\n”作为行分隔符。
linesRun
dos2unix
这样的工具:
dos2unix myscript
,然后再试一次