다음 스크립트를 사용하여 직렬 장치에 연결합니다 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/bash
call 과 동일합니다 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"로 백업합니다.