私のexpectスクリプトの最初の行が失敗します。これが私のスクリプトの内容全体ですが失敗します:
#!/usr/bin/expect -f
そしてそれはすぐに失敗します
": no such file or directory
私の応答として。 Expectは実際にインストールされ、/ usr/bin /にあり、これをルートから実行しています。 #記号の前にも余分なスペースや行はありません。もちろん、元々スクリプトにはそれ以上のものがありましたが、良いものに到達する前に失敗します。
それを試してみました、そしてここに結果があります:/ usr/bin/expect ^ M:悪いインタプリタ
スクリプトを混乱させるWindows改行(「^ M」)がそこにある可能性はありますか? 「od」を試して、「expect」と「tofromdos」の後の改行文字、またはエディター(例:hexlモードのemacs)を削除してください。詳細については、manページを参照してください。
行末が間違っています。 dos2unix
またはtr -d '\r'
を介して押し込みます。
この問題が発生し、期待されるインタプリタがインストールされていないことがわかりました。奇妙なことに、シェルでコマンドを実行すると、機能しました。ただし、シェルスクリプトを使用すると、次のエラーが発生しました:/ usr/bin/expect:不正なインタプリタ:そのようなファイルまたはディレクトリはありません。
Expectインタープリターをインストールするだけで修正しました。選択されたパッケージ名は次のとおりです。libtcl8.6を期待
ただ走れ:
Sudo apt-get install expect
正直なところ、期待はよくわかりませんが、システムで実行すると「正常に機能」します。何も起こりませんが、それは私が期待することです。エラーメッセージが表示されません。マニュアルページによると、
#!/usr/bin/expect -f
スクリプトを開始する正しい方法です。次に、cmdfileとして実行しているスクリプトを丸呑みにします。
問題を再現する方法は、通常の改行ではなく、実際に行末に^ Mを配置することでした(Bert Fの応答を見て、試してみるように促しました)。 vimの:setlistコマンドは奇妙な文字を表示すると確信しています。