shell 文件报 command not found 错误

今天在写一个 shell 文件,总感觉没有什么问题,然后上传到服务器,发现报了一堆的错误,明明很简单的一段shell,不可能写错,百思不得解。比如:

shell 文件

```

#!/bin/bash

Hello() {
    echo "hello function";
}

Hello

```

运行效果

```

[root@localhost www.study.com]# sh test.sh 
: command not found
'est.sh: line 3: syntax error near unexpected token `{
'est.sh: line 3: `Hello() {
[root@localhost www.study.com]#

```

后来各方查找,才明白,原来是 test.sh 是我在 windows 下编辑然后上传到 linux 系统里执行的。.sh 文件的格式为 dos 格式。而 linux 只能执行格式为 unix 格式的脚本。因为在 windows 下按一次回车键实际上输入的是“回车(CR)和换行(LF)”,然后在 linux/unix 下按一次回车键只输入"换行(LF)",所以修改的sh文件在每行都会多了一个 CR,导致 linux 下运行时就会报错找不到此命令。

我们可以通过 VIM 编辑器来查看文件的 format 格式,如下:

1、用 vim 命令打开文件

2、在 vi 命令行模式中使用 :set ff 即可查看 此文件的 format 格式

11.png

2.png

3、看到文件是 dos 格式,这时候就要修改了。同样可以用 :set ff=unix 修改文件为 unix 格式。如:

3.png


修改之后,再次运行,发现没有什么错误了~,如:

[root@localhost www.study.com]# sh test.sh 
hello function
[root@localhost www.study.com]#

未经允许不得转载:易读小屋  »  shell 文件报 command not found 错误