1

У меня есть 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. Я вошел в систему как root через SSH.

1 ответ1

3

Исправление разрешений

Уверен, что скрипт не является исполняемым. Для этого вам нужно установить исполняемый флаг для текущего пользователя, запустив:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .