Cat
回顯字元串,但在輸出中添加了額外的問號
奇怪的 ”?” 被添加到文件名輸出中。
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 格式。