Erro de bash durante a execução do script

1

Eu tenho um servidor dedicado do CentOS 6.5 de 64 bits. A única coisa que fiz foi yum install java7 , então não instalei nenhuma outra coisa.

Então, no diretório /root , eu fiz este arquivo ( 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

Eu sei que não há nada de errado com o código, porque eu tentei algum outro (de sites oficiais) e recebo os mesmos erros.

Então, se eu fizer:

cd /root
bash test.sh

Eu recebo este erro

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

Se eu fizer

cd /root
./test.sh

Eu recebo este erro

-bash: ./test.sh: Permission denied

Eu também tentei fazer isso no diretório /home e recebo os mesmos erros.

PS. Estou logado como root via SSH.

    
por user3524823 22.06.2014 / 16:10

1 resposta

3

Corrigindo Permissões

Tenho certeza de que o script não é executável. Para isso, você precisa definir o sinalizador de executável para o usuário atual executando:

chmod u+x /root/test.sh

Então você deve poder executá-lo como:

cd /root
./test.sh

Ou seja, se você estiver executando atualmente como root (verifique com whoami ).

Se você quiser que o script seja executável por outro usuário no sistema, ele precisa ser chmod og+x ("outros e grupo exeturável"), mas isso não funcionará se o script em si for salvo em /root , que não é legível por outros usuários além do próprio root.

Corrigindo erros de copiar e colar

Parece que, da sua mensagem de erro /bin/bash^M , você tem uma linha final do Windows CRLF ( \r\n ) , que deve ser apenas uma nova linha do Linux ( \n ).

Para remover isso, você pode executar o seguinte no arquivo:

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

Ou isto:

dos2unix test.sh
    
por 22.06.2014 / 16:15

Tags