web-dev-qa-db-ja.com

一般的な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

それはかなりうまく機能します。ここで、これを汎用スクリプトにし、ユーザーが接続するポートをユーザーから入力したいと思います。そのため、コマンドライン引数として入力を取得することが最善の方法だと思いました。そして、私は上記を次のように変更しました:

#!/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

私の2番目のスクリプトには明らかな欠陥があります。スクリプトでユーザー入力を受け入れ、Kermitを使用してシリアルポートに接続するにはどうすればよいですか?

2
skrowten_hermit

おそらく、シェルスクリプトとカーミットスクリプトを混同しているのでしょう。 Kermitは、シェルとはまったく異なる言語を使用します。記載されています ここ 。特に、arg1などの構文\%1を使用してスクリプトの引数にアクセスできます。したがって、2行目を次のように変更します

set port /dev/ttyUSB\%1

Kermitが私のもの(ckermit 9.0)に類似している場合は、追加の最初の引数--を指定してスクリプトを実行する必要があります。次に例を示します。

./test.script -- 8

これを行わない場合は、最初の行をKermitへの絶対パスに置き換えてから、代わりに+フラグを使用できます。

#!/usr/bin/Kermit +
1
meuh