0

我在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

4

2 回答 2

2

kermit 脚本语言与 bash 完全不同。命令行上传递的参数在 bash 中由美元符号扩展(如$1)。在 kermit 中,它们使用反斜杠百分比符号进行扩展,如\%1

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

为了告诉操作系统您的脚本必须由 解释kermit,您使用了所谓的env shebang #!/usr/bin/env,它与+参数不兼容。这意味着你必须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/ttyUSB\m(port_num)
于 2017-03-31T11:18:06.923 回答
0

不需要“+”号。说啊

port_num="/dev/ttyUSB$1"
于 2017-03-31T05:55:21.880 回答