シリアルデバイスに接続するために、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
を使用してシリアルポートに接続するにはどうすればよいですか?
おそらく、シェルスクリプトとカーミットスクリプトを混同しているのでしょう。 Kermit
は、シェルとはまったく異なる言語を使用します。記載されています ここ 。特に、arg1などの構文\%1
を使用してスクリプトの引数にアクセスできます。したがって、2行目を次のように変更します
set port /dev/ttyUSB\%1
Kermitが私のもの(ckermit 9.0)に類似している場合は、追加の最初の引数--
を指定してスクリプトを実行する必要があります。次に例を示します。
./test.script -- 8
これを行わない場合は、最初の行をKermitへの絶対パスに置き換えてから、代わりに+
フラグを使用できます。
#!/usr/bin/Kermit +