次のスクリプトを使用してシリアルデバイスに接続しますkermit
。
#!/usr/bin/kermit
set port /dev/ttyUSB8
set speed 115200
set carrier-watch off
set flow-control none
set prefixing all
OUTPUT ifconfig\13
ただし、次のエラーが発生します。
bash: ./test.script: /usr/bin/kermit^M: bad interpreter: No such file or directory
Shebangの後に私が提供したパスが問題かもしれないと思います。スクリプトが正しく実行されるための正しいパスをどのように見つけますか?
答え1
shebangの後に実行するコマンドがあります。 2番目のパラメータはスクリプト名になります。したがって、bashの場合は#!/bin/bash
callと同じですbash ./script
。あなたの場合、コマンドは次のとおりです。
sudo /usr/bin/kermit ./test.script
kermitがインストールされていることを確認し、/usr/bin
例えばwhich kermit
。
編集する。
ああ。これでエラーが見つかりました。最初の行には^ M(CR)があります。スクリプトの最初の行に移動して、行の最後を削除してもう一度実行してください。これはUnix / Linuxにあります。 DOS/Windowsでは説明しにくい^Mを追加します。
答え2
これは^M
キャリッジリターンで、スクリプトがWindowsシステムで作成されたことを示します。
キャリッジリターンを削除して改行のみを残すには、次のようにします。
perl -pi.old -e 's{\r}{}' file
これにより内部更新が実行され、最初に元のファイルが「.old」にバックアップされます。