2017-08-17 98 views
0

我想從bash腳本使用變量運行bash腳本。Bash使用變量從腳本運行腳本

該變量是從解析的CSV中分配的,而當我回顯它時,另一個腳本的路徑看起來沒問題。當我嘗試從變量運行腳本路徑失敗時。

Assiging變量(從CSV第2列):當試圖

+ echo $'/fake_path/scripts/test.sh\r' 

後然而:

THE_VARIABLE=`echo ${CHOICE[${WHICH}]} | awk -F";" '{print $2}'` 

回聲$ THE_VARIABLE(OK):

/fake_path/scripts/test.sh 

猛砸調試運行:

bash $THE_VARIABLE 
: No such file or directoryripts/test.sh 

它似乎只接受變量(?)中的部分字符串。

感謝您的幫助!

+0

不能再現 – hek2mgl

+0

請提供以下輸出: - echo「#$ THE_VARIABLE#」 – grail

+1

可能是導致問題的回車符\ r。 –

回答

1

的字符串與ASCII字符13結束(\ X0D或\ 015或\ r)和不是序列'\' 'r',與echo尾隨\r不能被看到,因爲回聲添加\n,但追加例如#字符將在線開始時顯示。

echo "${THE_VARIABLE}#" 
#fake_path/scripts/test.sh 

除去後\r

THE_VARIABLE=${THE_VARIABLE%$'\r'} 

否則則意味着輸入文件具有DOS行結束\r\n,它可以與dos2unix進行修改。

+0

完美!我只是在csv文件上運行dos2unix,一切正常。 謝謝! – user8476799