linux - Bash 脚本在空行上打印 "Command Not Found"

每次我在 Debian 的命令行中使用 bash scriptname.sh 运行脚本时,我都会得到 Command Not found,然后是脚本的结果。

脚本可以运行,但是对于每个空行,屏幕上总是会打印一个 Command Not Found 语句。每个空行都会导致找不到命令。

我正在运行 /var 文件夹中的脚本。

这是脚本:

#!/bin/bash

echo Hello World

我通过输入以下内容来运行它:

bash testscript.sh

为什么会发生这种情况?

最佳答案

确保您的第一行是:

#!/bin/bash

如果不是 /bin/bash,请输入您的 bash 路径


尝试运行:

dos2unix script.sh

这会将行尾等从 Windows 转换为 unix 格式。即它从行尾中删除\r (CR) 以将它们从 \r\n (CR+LF) 更改至\n (LF) .

More details about the dos2unix command (man page)


另一种判断文件是否为dos/Win格式的方法:

cat scriptname.sh | sed 's/\r/<CR>/'

输出将如下所示:

#!/bin/sh<CR>
<CR>
echo Hello World<CR>
<CR>

这将输出带有 <CR> 的整个文件文本为每个 \r 显示文件中的字符。

关于linux - Bash 脚本在空行上打印 "Command Not Found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362504/

相关文章:

for-loop - 检测 'for'循环中最后一个元素的pythonic方法是什么?

python - Ruby 相当于 virtualenv?

python - 有没有类似 RStudio for Python 的东西?

python - 如何在 Python 中创建 PDF 文件

python - python中的assertEquals与assertEqual

linux - 如何在不停止的情况下在 Docker 容器中运行 Nginx?

c - Linux 中的 PATH_MAX 定义在哪里?

c# - 在 Linux 上开发 C#

python - 子进程命令的实时输出

c - 将输出重定向到文件时 printf() 和 system() 的结果顺序错误