': 읽기에 유효한 식별자가 아닙니다.

': 읽기에 유효한 식별자가 아닙니다.

나는 Notepad++를 사용하고 다음을 입력합니다:

    read s
    echo "$s"

출력은 다음과 같습니다

<code>': 유효한 식별자가 아닙니다</code>

그런 다음 세미콜론을 넣으려고 합니다.

read s;
echo "$s"

출력은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

파일을 다른 이름으로 저장 q.sh하고 cygwin으로 실행했지만 여전히 연산자를 사용할 수 없어 read혼란스럽습니다. 다른 편집기도 사용해 보았지만 vi결과는 동일합니다.

뭐가 잘못 되었 니? 어떻게 작동하게 만들까요?

답변1

쉘 스크립트를 구성하는 텍스트 파일은 Notepad++로 작성되었습니다. 이 편집기는 기본적으로 Unix 관점에서 \r각 줄 끝에 불필요한 캐리지 리턴( )이 있는 DOS 텍스트 파일로 파일을 저장합니다. 이것은 혼란스럽다 sh.

제거하려면:

$ tr -d '\r' <q.sh >q-new.sh
$ mv q-new.sh q.sh

스크립트하다-line 이 부족 #!하지만(주석에서 지적했듯이) 명시적 인터프리터( )로 실행하는 한 sh q.sh필요하지 않습니다.

라인 추가하기

#!/bin/sh

(이후 chmod +x q.sh) 실행을 ./q.sh로 실행하는 것과 정확히 동일하게 동작 하도록 할 것입니다 sh q.sh.

답변2

Notepad++에 액세스할 수 있는 경우 Unix용 캐리지 리턴을 변환하는 또 다른 방법입니다. 메모장에서 편집 -> EOL 변환 -> Unix(LF)로 이동합니다.

프랑스어에서는 다음과 같습니다. Edition -> Convertir les sauts de ligne -> Converti au format Unix(LF)

더 빠를 수 있습니다.

관련 정보