运行脚本时出现 Bash 错误

运行脚本时出现 Bash 错误

我有一台 CentOS 6.5 64 位专用服务器。我唯一做的就是yum install java7,所以我没有安装任何其他东西。

因此我在目录中/root创建了这个文件(test.sh

#!/bin/bash
while true
do
    echo "Hey"
        echo "You have five seconds to do 'Ctrl+C' or the while loop will continue."
    sleep 5
done

我知道代码没有问题,因为我尝试过一些其他代码(来自官方网站)并且遇到了同样的错误。

所以如果我这么做:

cd /root
bash test.sh

我收到这个错误

test.sh: line 7: syntax error near unexpected token `done'
test.sh: line 7: `done'

如果我做

cd /root
./test.sh

我收到这个错误

-bash: ./test.sh: Permission denied

我也尝试在目录中执行此操作/home,但出现了同样的错误。

PS. 我通过 SSH 以 root 身份登录。

答案1

修复权限

确信该脚本不可执行。为此,您需要设置可执行标志对于当前用户,运行:

chmod u+x /root/test.sh

然后你应该能够以如下方式运行它:

cd /root
./test.sh

也就是说,如果您当前以 root 身份运行(请使用 检查whoami)。

如果您希望脚本可由系统上的其他用户执行,则它必须是chmod og+x(“其他和组可执行”),但是如果脚本本身保存在 下,则这将不起作用,因为/root除了 root 本身之外的其他用户无法读取它。

修复复制粘贴错误

从您的错误信息来看/bin/bash^M,您有一个Windows CRLF 行结尾那里(\r\n),它应该只是一个 Linux 换行符(\n)。

要删除它,您可以对文件运行以下命令:

sed -i 's/\r//' test.sh

或这个:

dos2unix test.sh

相关内容