为什么我的 Expect 脚本在第 1 行失败?

发布于 2024-10-08 20:40:58 字数 1819 浏览 9 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

零崎曲识 2024-10-15 20:40:58

我遇到了这个问题,发现我没有安装预期的解释器!奇怪的是,如果您在 shell 中运行该命令,它就会起作用。然而,通过 shell 脚本我得到了这个错误:

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

我通过简单地安装 Expect 解释器来修复它。选择的包名称是:expect libtcl8.6

只需运行:

sudo apt-get install expect

I had this issue and found I didn't have the expect interpreter installed! Oddly enough, if you ran the command in the shell it worked. However, through a shell script I got this error:

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

I fixed it by simply installing the Expect interpreter. The package name that was chosen was: expect libtcl8.6

Just run:

sudo apt-get install expect
无法言说的痛 2024-10-15 20:40:58

尝试了一下,结果如下:/usr/bin/expect^M:错误的解释器

是否可能有一个令人困惑的 Windows 换行符(^M)剧本?您可以尝试 od 来查看 expecttofromdos 或编辑器(例如 emacs)将其删除。请参阅手册页以获取更多信息。

Tried it and here is the result: /usr/bin/expect^M: bad interpreter

Is it possible that there's a Windows newline (the ^M) in there that's confusing the script? You can try od to see what newline character(s) is after the expect and tofromdos or an editor (e.g. emacs in hexl-mode) to remove it. See the man pages for more info.

好多鱼好多余 2024-10-15 20:40:58

你的行结尾是错误的。通过 dos2unixtr -d '\r' 将其推送。

Your line endings are wrong. Shove it through dos2unix or tr -d '\r'.

月下伊人醉 2024-10-15 20:40:58

老实说,我真的不知道期望,但是当我在我的系统上运行它时,它“工作”得很好。什么也没发生,但这就是我所期望的。我没有收到任何错误消息。根据手册页,

#!/usr/bin/expect -f

这是启动脚本的正确方法。 Expect 然后会将您正在执行的脚本作为 cmdfile 读取。

我重现问题的方法是在行尾实际放置一个 ^M 而不是普通的换行符(看到 Bert F 的回复 促使我尝试一下)。我确信 vim 的 :set list 命令会显示任何奇怪的字符。

I don't really know expect, to be honest, but when I run that on my system it "works" fine. Nothing happens, but that's what I'd expect. I don't get any error message. According to the man page,

#!/usr/bin/expect -f

is the correct way to start your script. Expect then slurps up the script you are executing as the cmdfile.

The way I got it to reproduce the problem was to actually put a ^M at the end of the line instead of a normal newline (saw Bert F's response and that prompted me to try it). I'm sure vim's :set list command will show any odd characters.

故事还在继续 2024-10-15 20:40:58

如果您观察到该错误,则存在一个 Windows 换行符,这是因为它是通过邮件或 Winscp 从 Windows 计算机复制而来而添加的。因此,为了避免此错误,请使用 scp linux 将脚本复制到 linux 并执行该脚本。

If you observe the error, there was a windows newline character, that is added because its copied from windows machine via mail or winscp. So to avoid this error copy the script using scp linux to linux and execute the script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文