18

私の期待スクリプトの最初の行が失敗します。これが私のスクリプトの内容全体であり、失敗します:

#!/usr/bin/expect -f

そして、それはすぐに失敗します

": no such file or directory

私の回答として。Expect は実際にはインストールされており、/usr/bin/ にあり、これをルートから実行しています。# 記号の前にも余分なスペースや行はありません。もちろん、スクリプトには元々もっと多くの機能がありましたが、うまくいく前にうまくいきませんでした。

4

5 に答える 5

24

それを試してみました、そしてここに結果があります:/usr/bin/expect^M: bad interpreter

^Mスクリプトを混乱させるWindows改行()がそこにある可能性はありますか?and tofromdosまたはエディター(例: hexlモードのemacsod)の後に改行文字が何であるかを確認して削除することができます。詳細については、manページを参照してください。expect

于 2010-12-22T02:55:26.407 に答える
19

私はこの問題を抱えていて、期待されるインタープリターがインストールされていないことがわかりました! 奇妙なことに、シェルでコマンドを実行すると、機能しました。ただし、シェルスクリプトを使用すると、次のエラーが発生しました。

/usr/bin/expect: bad interpreter: No such file or directory

Expectインタープリターをインストールするだけで修正しました。選択されたパッケージ名は次のとおりです: libtcl8.6 を期待する

とにかく走れ:

sudo apt-get install expect
于 2016-11-18T21:48:07.930 に答える
10

行末が間違っています。dos2unixまたはで押し込みtr -d '\r'ます。

于 2010-12-22T02:35:24.913 に答える
1

正直なところ、期待はよくわかりませんが、システムで実行すると「正常に機能」します。何も起こりませんが、それは私が期待することです。エラーメッセージは表示されません。マニュアルページによると、

#!/usr/bin/expect -f

スクリプトを開始する正しい方法です。次に、実行しているスクリプトをcmdfileとして丸呑みします。

^M問題を再現する方法は、通常の改行ではなく、実際に行の最後にaを付けることでした( Bert Fの応答を見て、試してみるように促しました)。vimの:set listコマンドは奇妙な文字を表示すると確信しています。

于 2010-12-22T03:00:23.153 に答える