문자열을 에코하지만 출력에 추가 물음표를 추가합니다.

문자열을 에코하지만 출력에 추가 물음표를 추가합니다.

파일 이름 출력에 이상한 "?"가 추가되었습니다.

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 형식으로 변환하는 데 사용되었습니다 .

관련 정보