奇怪的 ”?” 被添加到文件名输出中。
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
但是除了最后一行之外,我在每个变量之后都得到了问号${SUMMER}
。
20190430_spring1?_step4.r
20190430_spring2?_step4.r
20190430_summer1?_step4.r
20190430_summer2_step4.r
问题是什么?
${SUMMER}
是一个只有一列的txt文件
该文件包含CR+LF(DOS/Windows 样式)行尾。这些问号只是
ls
表示幸存下来的 CR 字符。CR 字符是文件名中的字面意思。姓氏是可以的,可能是因为文件中的最后一行根本没有行结尾。要确认此调用
file /path_to_file/summer.txt
。我猜该工具会告诉您有关“CRLF 行终止符”的信息。用于
dos2unix
先将文件转换为 Unix 格式。