BASH 스크립트는 다음과 같습니다.
#!/bin/bash
read -p "Type in a color name, please: " COLOR
case "$COLOR" in
green | red | yellow)
echo -n "nice colors!"
;;
*)
echo -n "meh..."
;;
esac
x
사용자에 대해 스크립트에 대한 권한이 설정 되면 이를 실행하지만 다음과 같은 결과를 얻습니다.
[inewton@centos7 LPIC1-exercises]$ ./colors.sh
Type in a color name, please: pink
./colors.sh: line 12: syntax error near unexpected token `newline'
'/colors.sh: line 12: `esac
[inewton@centos7 LPIC1-exercises]$
내가 뭘 잘못했나요? 도와주세요.
답변1
'/colors.sh: line 12: `esac
줄 시작 부분에 닫는 따옴표가 이상한 위치에 있다는 점에 유의하세요. 이는 다음이 있다는 표시입니다.캐리지 리턴(CR)단어 뒤의 문자입니다 esac
. Bash는 CR을 단어의 일부로 취급하므로 esac␍
이는 예약어가 아니며 esac
실제 단어가 누락되었습니다.
CR 문자는 Windows 줄 끝의 일부입니다. Unix 줄 끝은 단일 LF(줄 바꿈) 문자인 반면 Windows 줄 끝은 두 문자 시퀀스 CR+LF입니다. 바라보다#!/bin/bash - 해당 파일이나 디렉터리가 없습니다.더 많은 설명을 원하시면. 여기서 문제는 파일에 줄 끝이 혼합되어 있다는 것입니다. 이전 줄은 문제를 일으키지 않으므로 적어도 일부 파일에는 Unix 줄 끝이 있어야 합니다.
파일에서 모든 캐리지 리턴을 제거합니다. 대부분의 편집기는 줄 끝이 혼합된 파일에 명시적으로 표시합니다.