kermit
직렬 장치에 연결하기 위해 스크립트에 다음을 작성했습니다 .
#!/usr/bin/env kermit
set port /dev/ttyUSB8
set speed 115200
set carrier-watch off
set flow-control none
set prefixing all
set input echo on
그것은 그 일을 아주 잘 수행합니다. 이제 나는 이것을 일반 스크립트로 만들고 사용자가 연결하려는 포트에 대한 입력을 얻고 싶습니다. 따라서 입력을 명령줄 인수로 제공하는 것이 가장 좋은 방법이라고 생각합니다. 위 내용을 다음과 같이 수정했습니다.
#!/usr/bin/env kermit
port_num="/dev/ttyUSB"+$1
set port port_num
set speed 115200
set carrier-watch off
set flow-control none
set prefixing all
set input echo on
그러나 다음과 같은 오류가 발생합니다.
user4@user-pc-4:~/Scripts$ ./test.script 8
?Not a command or macro name: "port_num="/dev/ttyUSB"+$1"
File: /home/Scripts/test.script, Line: 2
port_num
?SET SPEED has no effect without prior SET LINE
"8" - invalid command-line option, type "kermit -h" for help
교체하려고 합니다
port_num="/dev/ttyUSB"+$1
그리고
port_num="/dev/ttyUSB$1"
게다가. 이것도 작동하지 않습니다. 알겠어요
user4@user-pc-4:~/Scripts$ ./test.script 8
?Not a command or macro name: "port_num="/dev/ttyUSB$1""
File: /home/Scripts/test.script, Line: 2
port_num
?SET SPEED has no effect without prior SET LINE
"8" - invalid command-line option, type "kermit -h" for help
내 두 번째 스크립트에는 명백한 결함이 있습니다. 스크립트가 사용자 입력을 받아들이고 직렬 포트에 대한 연결을 사용하도록 하려면 어떻게 해야 합니까 kermit
?
답변1
아마도 쉘 스크립트와 커밋 스크립트를 혼동하고 있을 것입니다. kermit
쉘과 완전히 다른 언어를 사용하십시오. 설명하다여기. 특히 \%1
arg 1과 같은 구문을 사용하여 스크립트의 인수에 액세스할 수 있습니다. 따라서 두 번째 줄을 다음으로 변경하십시오.
set port /dev/ttyUSB\%1
귀하의 커밋이 내 커밋(ckermit 9.0)과 유사한 경우 추가 첫 번째 인수를 사용하여 스크립트를 실행해야 합니다 --
. 예:
./test.script -- 8
이 작업을 원하지 않으면 첫 번째 줄을 kermit의 절대 경로로 바꾼 다음 해당 +
플래그를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
#!/usr/bin/kermit +