在bash脚本中,我到了这一点
read ENE CX CY CZ <<< $(head -n 1 RESULTS_${lach}tal2)
echo $ENE
SED_ARG="-e 's/-/m/g'"
read CX2 <<< $( echo ${CX} | eval sed "$SED_ARG")
read CY2 <<< $( echo ${CY} | eval sed "$SED_ARG")
read CZ2 <<< $( echo ${CZ} | eval sed "$SED_ARG")
DIREC="${CX2}_${CY2}_${CZ2}"
echo $DIREC
cd "$DIREC"
变量DIREC的值是目录的名称,我得到像
这样的东西m25.1240_m22.1250_m5.1540
这个目录确实存在,如果我直接在bash中cd m25.1240_m22.1250_m5.1540
它可以工作,我可以进去。但在脚本上它不起作用,我得到错误:
: No such file or directory: cd: m25.1240_m22.1250_m5.1540
我不明白为什么错误
PS:
echo "$DIREC" | od -c
给出
0000000 m 2 5 . 1 2 4 0 _ m 2 2 . 1 2 5
0000020 0 _ m 5 . 1 5 4 0 \r \n
0000033
答案 0 :(得分:1)
我怀疑在脚本里面,你的工作目录在别处,所以你不能cd。试试这个:而不是
cd "$DIREC"
替换为
echo current directory is $PWD
cd "m25.1240_m22.1250_m5.1540"
看看你是否还有同样的问题。
答案 1 :(得分:1)
您的RESULTS_${lach}tal2
文件是否具有Windows样式的行结尾? CZ
以回车结束吗?这表明了什么:
echo "$DIREC" | od -c
此外,还有很多不必要的评估正在进行中。 Bash可以在变量替换中进行替换:
read ENE CX CY CZ <<< $(head -n 1 RESULTS_${lach}tal2 | sed 's/\r$//')
DIREC="${CX/-/m}_${CY/-/m}_${CZ/-/m}"