ファイル名の出力に奇妙な「?」が追加されました。
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}
列が1つしかないtxtファイル。
答え1
このファイルには以下が含まれています。CR+LF (DOS/Windows スタイル) 行末。この疑問符はただls
生き残った CR 文字を表します。。 CR文字がファイル名に存在します。姓が働きます。それはおそらく、ファイルの最後の行に行末がまったくないからです。
この通話を確認するにはfile /path_to_file/summer.txt
。ツールが「CRLF行終端」について教えているようです。
dos2unix
最初はファイルをUnix形式に変換するために使用されました。