kermit ディレクトリパスを探し、スクリプトの shebang(#!) の後に配置します。

kermit ディレクトリパスを探し、スクリプトの shebang(#!) の後に配置します。

次のスクリプトを使用してシリアルデバイスに接続します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/bashcallと同じです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」にバックアップされます。

関連情報