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

Shell 如何让kermit脚本接受参数并连接到串行设备,shell,scripting,parameter-passing,command-line-arguments,kermit,Shell,Scripting,Parameter Passing,Command Line Arguments,Kermit,我在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 它做得很好。现在,我想让它成为一个通用脚本,并希望从用户想要连接的端口获取输入。所以,我认为将输入作为命令行参数是最好的方法。我用以下方式修改了上面的内容: #

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

还有

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

不需要“+”符号。就说

port_num="/dev/ttyUSB$1"
不需要“+”符号。就说

port_num="/dev/ttyUSB$1"

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)

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)

我也试过了。没用。这是否意味着
kermit
脚本不同于
bash
脚本?是的,X脚本通常是为名为X的解释器程序编写并由其执行的脚本。第一行(
#!
)的hashbang格式为注释,允许设置了执行位的文件在指定的解释器下运行。我也试过了。没用。这是否意味着
kermit
脚本不同于
bash
脚本?是的,X脚本通常是为名为X的解释器程序编写并由其执行的脚本。第一行(
#!
)的hashbang格式为注释,允许设置了执行位的文件在指定的解释器下运行。这就成功了!我也试过宏。不幸的是,它对我的案例不起作用(就像你说的,它也不需要)。你能分享我可以了解更多关于
kermit
脚本的链接吗?其中一个没有多大帮助。@skrowten_hermit我编辑了宏部分,它有一个错误。现在,如果不提供默认值,它将使用默认值。kermit项目的商业模式是,该软件免费用于非商业用途,您必须支付文档费用。现在源代码是免费的,但是没有太多的文档。项目的新主页是,在“脚本”下,您会发现一个相当广泛的集合,但它实际上只是您发布的链接的更新版本。@您说得对。我更正了答案。非常感谢。成功了!我也试过宏。不幸的是,它对我的案例不起作用(就像你说的,它也不需要)。你能分享我可以了解更多关于
kermit
脚本的链接吗?其中一个没有多大帮助。@skrowten_hermit我编辑了宏部分,它有一个错误。现在,如果不提供默认值,它将使用默认值。kermit项目的商业模式是,该软件免费用于非商业用途,您必须支付文档费用。现在源代码是免费的,但是没有太多的文档。项目的新主页是,在“脚本”下,您会发现一个相当广泛的集合,但它实际上只是您发布的链接的更新版本。@您说得对。我更正了答案。非常感谢。