相关疑难解决方法(0)

为什么 Linux 使用 LF 作为换行符?

据我所知,每个操作系统都有不同的方式来标记行尾 (EOL) 字符。商业操作系统使用 EOL 回车(Windows 上的回车和换行,Mac 上仅回车)。另一方面,Linux 仅对 EOL 使用换行符。

为什么 Linux 不使用 EOL 回车(而仅使用换行符)?

history files newlines

91
推荐指数
4
解决办法
2万
查看次数

#!/bin/bash: 没有那个文件或目录

我不明白为什么会出现此错误:

line 1: #!/bin/bash: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在运行任何像这样的 bash 脚本时:

#!/bin/bash
echo "pouet"
Run Code Online (Sandbox Code Playgroud)

我试过在 Fedora 19 上运行它,一切顺利。

我在 Debian 7 上,我尝试解析要搜索的第一行,\n\r但一切都很干净(到目前为止我制作的每个脚本似乎都以相同的方式运行)。

$PATH是这样的:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。我用普通用户或 root 尝试过,结果相同。但脚本的其余部分似乎表现正常(回显被解释)。是的,/bin/bash存在并且是可执行的。

编辑:

$ LC_ALL=C sed -n l < tesT.sh
\357\273\277#!/bin/bash$
echo "pouet"$
Run Code Online (Sandbox Code Playgroud)

bash debian

6
推荐指数
1
解决办法
2万
查看次数

这三个额外的字符是什么,为什么它们会导致如此奇怪的错误?

看看这两个文件:

它们在我看来完全相同,但文件 1 有 41 个字节,文件 2 有 44 个字节。

现在,我不会关心 3 个额外的字符,但是,我认为这些字符也会导致一个奇怪的错误:当我克隆并运行这些文件时,文件 1 运行正常,而文件 2 在第 3 行返回错误:“./ BasicCheck.sh: line 3: cd: case0 : No such file or directory"。

那么:这些额外的字符是什么?为什么它们会导致错误?我应该怎么做才能修复这些错误?

我的猜测是它们是换行符——也许文件 1 有基于 Linux 的换行符,而文件 2 有基于 Windows 的换行符。这是正确的吗?为什么它会导致这样的错误?

bash error-handling

3
推荐指数
1
解决办法
367
查看次数

sh 脚本名称 -sh: /bin/sh^M: bad interpreter: No such file or directory

我有以下提示

[/share/registrazioni/Script] # cat delete_7gg.sh
#!/bin/sh
find /share/registrazioni/ -type f -mtime +7 -delete
[/share/registrazioni/Script] # which sh
/bin/sh
[/share/registrazioni/Script] # chmod +x delete_7gg.sh
[/share/registrazioni/Script] # ./delete_7gg.sh
-sh: ./delete_7gg.sh: /bin/sh^M: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么我得到 /bin/sh^M: bad interpreter: No such file or directory ?我用vi制作了脚本。我在可以通过 ssh 访问的 qnap qts 4.3.6 中制作了脚本。该脚本应该简单地删除超过 7 天的文件。我无法安装 dos2unix,因为系统没有包管理器。我只是希望制作一个脚本并将其放入 cron 中。但我收到了那个错误。

shell

2
推荐指数
1
解决办法
2754
查看次数

一个简单的 case/esac 构造练习失败了,为什么?

这是 BASH 脚本:

#!/bin/bash

read -p "Type in a color name, please: " COLOR

case "$COLOR" in
    green | red | yellow)
    echo -n "nice colors!"
    ;;
    *)
    echo -n "meh..."
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

x为用户设置脚本权限后,我运行它但得到以下信息:

[inewton@centos7 LPIC1-exercises]$ ./colors.sh
Type in a color name, please: pink
./colors.sh: line 12: syntax error near unexpected token `newline'
'/colors.sh: line 12: `esac
[inewton@centos7 LPIC1-exercises]$
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?请帮帮我。

bash case

-1
推荐指数
1
解决办法
44
查看次数

标签 统计

bash ×3

case ×1

debian ×1

error-handling ×1

files ×1

history ×1

newlines ×1

shell ×1