Cat

回顯字元串,但在輸出中添加了額外的問號

  • April 30, 2019

奇怪的 ”?” 被添加到文件名輸出中。

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 格式。

引用自:https://unix.stackexchange.com/questions/516414