我试图从命令行运行我的shell脚本,让我们说;
我的脚本如下所示:
#!bin/bash
echo hello
尝试运行此源./abcd.sh时出现此错误。
"' is not a typo you can run the following command to lookup the package that contains the binary:
command-not-found
: command not found
hello
"
在“echo hello”之前有空行之前从未见过这个问题吗?我想知道是否有其他人遇到过这样的事情。
答案 0 :(得分:5)
除了您的脚本的第一行是注释之外,听起来您的文件具有DOS行结尾,并且回车被视为未找到的命令。错误消息听起来像自定义command_not_found_handle
函数提供的东西(我相信Ubuntu定义)。
答案 1 :(得分:2)
#!bin/bash
需要
#!/bin/bash
或安装bash的地方(您可以通过执行whereis bash
)来找到它。
你的程序在使用bash(即bash ./abcd.sh
)调用时应该可以正常工作,但直接执行./abcd.sh
时,hashbang行确实很重要,因为这就是解释器所包含的脚本的位置。可执行文件。
答案 2 :(得分:0)
在引号内尝试echo 'hello'
。看起来echo
命令和hello
之间有一个换行符,它试图将'hello'作为命令运行。
hashbang行应该是#!/bin/bash
,但是搞乱它并不重要,因为它会解释以散列作为注释开头的任何行。
答案 3 :(得分:0)
使用debug选项运行脚本以查看实际失败的行:
bash -x abcd.sh
注意:在这种情况下,Shebang行将被视为注释,因此如果脚本的其余部分正确,它将正确执行:
$ bash -x abcd.sh
+ echo hello
hello
答案 4 :(得分:0)
确保您的文件没有BOM 使用Notepad ++在Windows下编辑脚本时遇到了同样的问题。 确保转换为" UTF-8,无需BOM"。