我使用以下脚本连接到我的串行设备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 之后你就有了要执行的命令。脚本名称将是第二个参数。因此,如果是 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”。