Shell脚本:找不到新行命令

时间:2013-06-10 23:21:48

标签: shell

我试图从命令行运行我的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”之前有空行之前从未见过这个问题吗?我想知道是否有其他人遇到过这样的事情。

5 个答案:

答案 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"。