首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让kermit脚本接受参数并连接到串行设备

如何让kermit脚本接受参数并连接到串行设备
EN

Stack Overflow用户
提问于 2017-03-31 05:50:54
回答 2查看 1.1K关注 0票数 0

为了连接到我的串行设备,我用kermit脚本编写了以下内容:

代码语言:javascript
复制
#!/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

它做得很好。现在,我想让这成为一个通用脚本,并希望从用户输入他想要连接的端口。因此,我认为将输入作为命令行参数是最好的方法。我对上面的内容作了如下修改:

代码语言:javascript
复制
#!/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

但是,我得到了以下错误:

代码语言:javascript
复制
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

我试着替换

代码语言:javascript
复制
port_num="/dev/ttyUSB"+$1

使用

代码语言:javascript
复制
port_num="/dev/ttyUSB$1"

也是。

我的第二个脚本有一个明显的缺陷。如何让脚本接受用户输入并使用kermit连接到串口

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 11:18:06

kermit脚本语言与bash完全不同。在命令行上传递的参数在bash中通过美元符号展开(如在$1中)。在kermit中,它们用反斜杠百分比表示法展开,就像在\%1中一样。

要将后续的命令行参数传递给脚本引擎,必须使用一个kermit参数调用+

为了告诉操作系统您的脚本必须由kermit解释,您使用了所谓的env #!/usr/bin/env,它与+参数不兼容。这意味着您必须在系统上定位kermit,发出命令

代码语言:javascript
复制
$ type kermit
kermit is /usr/bin/kermit

(另一个常见的位置是/usr/local/bin/kermit)。现在,将正确的位置放在shebang中,添加+参数,您就完成了:

代码语言:javascript
复制
#!/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名称),那么可以这样定义默认值:

代码语言:javascript
复制
assign port_num \%1
if not defined port_num assign port_num 8
set port /dev/ttyUSB\m(port_num)
票数 2
EN

Stack Overflow用户

发布于 2017-03-31 05:55:21

不需要"+“标志。只管说

代码语言:javascript
复制
port_num="/dev/ttyUSB$1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43133310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档