파일 이름 출력에 이상한 "?"가 추가되었습니다.
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 형식으로 변환하는 데 사용되었습니다 .