我正在尝试使用变量从bash脚本运行bash脚本。
变量是在解析的CSV之前分配的,当我回显它时,另一个脚本的路径看起来没问题。当我尝试从变量运行脚本路径时,它失败了。
指定变量(来自csv的第2列):
THE_VARIABLE=`echo ${CHOICE[${WHICH}]} | awk -F";" '{print $2}'`
echo $ THE_VARIABLE(ok):
/fake_path/scripts/test.sh
Bash debug:
+ echo $'/fake_path/scripts/test.sh\r'
然而,在尝试运行之后:
bash $THE_VARIABLE
: No such file or directoryripts/test.sh
似乎只在变量(?)中使用了部分字符串。
感谢您的帮助!
答案 0 :(得分:1)
字符串以ASCII字符13(\ x0D或\ 015或\ r \ n)结尾,而不是序列'\' 'r'
,echo
尾随\r
无法显示因为echo添加了\n
,但是附加一个#
字符会在行的开头显示。
echo "${THE_VARIABLE}#"
#fake_path/scripts/test.sh
删除尾随\r
:
THE_VARIABLE=${THE_VARIABLE%$'\r'}
否则表示输入文件的dos行结尾为\r\n
,可以使用dos2unix
进行修改。