kermit 디렉토리 경로를 찾아 스크립트에서 shebang(#!) 뒤에 배치합니다.

kermit 디렉토리 경로를 찾아 스크립트에서 shebang(#!) 뒤에 배치합니다.

다음 스크립트를 사용하여 직렬 장치에 연결합니다 kermit.

#!/usr/bin/kermit
set port /dev/ttyUSB8
set speed 115200
set carrier-watch off
set flow-control none
set prefixing all
OUTPUT ifconfig\13

하지만 다음과 같은 오류가 발생합니다.

bash: ./test.script: /usr/bin/kermit^M: bad interpreter: No such file or directory

Shebang 이후에 내가 제공한 경로가 문제일 수 있다고 생각합니다. 스크립트가 올바르게 실행되기 위한 올바른 경로를 어떻게 찾나요?

답변1

shebang 후에는 실행할 명령이 있습니다. 두 번째 매개변수는 스크립트 이름이 됩니다. 따라서 bash라면 #!/bin/bashcall 과 동일합니다 bash ./script. 귀하의 경우 명령은 다음과 같습니다.

sudo /usr/bin/kermit ./test.script

kermit이 설치되어 있는지 확인하고 /usr/bin예를 들어 which kermit.

편집하다.

아. 이제 오류를 발견했습니다. 첫 번째 줄에는 ^M(CR)이 있습니다. 스크립트의 첫 번째 줄로 이동하여 줄의 끝 부분을 삭제하고 다시 실행하세요. 이것은 유닉스/리눅스에 있습니다. DOS/Windows에서는 설명하기 어려운 ^M을 추가합니다.

답변2

이는 ^M캐리지 리턴으로, 스크립트가 Windows 시스템에서 작성되었음을 나타냅니다.

캐리지 리턴을 제거하고 줄바꿈만 남기려면 다음을 수행합니다.

perl -pi.old -e 's{\r}{}' file

이렇게 하면 내부 업데이트가 수행되고 먼저 원본 파일을 ".old"로 백업합니다.

관련 정보