回显字符串,但在输出中添加了额外的问号

回显字符串,但在输出中添加了额外的问号

奇怪的 ”?”已添加到文件名输出中。

SCRIPTS="/path_to_script/"
SUMMER=`cat /path_to_file/summer.txt`

for i in ${SUMMER};
  do cat <<- EOF > $SCRIPTS/20190430_$(echo ${i})_step4.r
#content omit
EOF
   done

预期我们的输出是

20190430_spring1_step4.r
20190430_spring2_step4.r
20190430_summer1_step4.r
20190430_summer2_step4.r

但是除了 .txt 中的最后一行之外,我在每个变量后面都得到了问号${SUMMER}

20190430_spring1?_step4.r
20190430_spring2?_step4.r
20190430_summer1?_step4.r
20190430_summer2_step4.r

问题是什么? ${SUMMER}是一个只有一列的txt文件

答案1

该文件包含CR+LF(DOS/Windows 风格)行结尾。这些问号只是ls表示幸存的 CR 字符。 CR 字符确实存在于文件名中。姓氏可以,可能是因为文件中的最后一行根本没有行结尾。

要确认此调用file /path_to_file/summer.txt。我想该工具会告诉您有关“CRLF 行终止符”的信息。

首先用于dos2unix将文件转换为 Unix 格式。

相关内容