簡體   English   中英

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

[英]Jenkins: special characters getting inserted in bash script

我正在執行一個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正在造成嚴重破壞。 我該如何解決?

您必須使用以下命令替換'\\ r'符號

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

在Jenkins中有幾種​​運行BASH腳本的方法。 方法1是創建bash腳本,並讓Jenkins在構建過程中執行它。 但是,您也可以直接在Jenkins中輸入BASH腳本。 您是用哪一種方式?

我的懷疑是您已經在Windows上使用記事本編寫了外殼腳本,然后在Unix或設置為采用Unix行尾的Cygwin安裝上執行了該腳本。 您看到的\\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感到遺憾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM