我在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"
。
我的第二个剧本中有一个明显的缺陷。如何让脚本接受用户输入并使用kermit
?
答案 0 :(得分:2)
kermit脚本语言与bash完全不同。在命令行上传递的参数通过bash中的美元符号扩展(如$1
中所示)。在kermit中,它们使用反斜杠百分比表示法扩展,如\%1
要将后续命令行参数传递给脚本引擎,必须使用kermit
参数调用+
。
要告诉操作系统您的脚本必须由kermit
解释,您使用了所谓的 env shebang #!/usr/bin/env
,它与{+
不兼容1}}参数。这意味着您必须在系统上找到kermit
,并发出命令
$ type kermit
kermit is /usr/bin/kermit
(另一个常见位置是/usr/local/bin/kermit
)。现在,将正确的位置放在shebang中,添加+
参数,然后就完成了:
#!/usr/bin/kermit +
set port /dev/ttyUSB8\%1
set speed 115200
set carrier-watch off
set flow-control none
set prefixing all
set input echo on
如果要定义宏(用户定义变量的kermit名称),可以这样做,这是一种定义默认值的方法:
assign port_num \%1
if not defined port_num assign port_num 8
set port /dev/ttyUSB8\m(port_num)
答案 1 :(得分:0)
不需要" +"标志。只是说
port_num="/dev/ttyUSB$1"