我有一台 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