Script não imprime minha instrução echo (também precisa suprimir o aviso)

0

Eu estou tentando escrever um script de shell muito simples no Linux. O cenário que estou tentando alcançar é:

Criando uma conta de usuário e dando a ela uma senha internamente (nenhuma interação com o usuário é permitida para isso). Uma vez bem sucedido, basta exibir uma mensagem de sucesso para o usuário. Nenhum dos demais deve ser exibido.

No RHEL, isso ficou muito simples, pois o comando passwd aceita a opção --stdin, que me ajudou a passar a entrada via Pipe. E eu redirecionei a saída padrão em um arquivo de log. [Não compartilhando esse código, já que é um pouco simples e explicado várias vezes aqui para uma pergunta diferente no StackExcahnge.]

No entanto, o Ubuntu não está aceitando a opção --stdin para passwd, portanto, eu tive que usar o método abaixo:

#!/bin/bash
useradd -m demo &>path/to/logfile.log
passwd demo &>>path/to/logfile.log << EOF
myPasswd
myPasswd
EOF
echo "User demo successfully added to the system."

Agora, o problema aqui é que minha saída não imprime a instrução echo e também exibe um aviso:

root@ubuntu:~# ./usercreate.sh 
./usercreate.sh: line 8: warning: here-document at line 3 delimited by end-of-file (wanted 'EOF')
root@ubuntu:~# 

em vez do meu esperado:

root@ubuntu:~# ./usercreate.sh 
User demo successfully added to the system.
root@ubuntu:~# 

Por favor me ajude com estas duas coisas:

  1. Existe uma maneira de suprimir esse aviso apenas para este script?
  2. Por que não está imprimindo minha declaração de eco e como posso imprimi-la?

PS: Outra maneira ou ideia de escrever este roteiro também é bem vinda

Obrigado

    
por theHeman 27.02.2015 / 08:24

1 resposta

1

Durante o uso do delimitador HEREDOC, não deve haver espaços atrasados ou atrasados e o delimitador deve ser a única palavra na linha. Eu neste exemplo, eu tinha um espaço após o EOF que estava causando todo o problema. O script está funcionando como esperado depois de remover esse espaço atrasado!

O crédito por essas respostas vai para o usuário Carlos Campderrós no StackOverflow. Apenas compartilhando sua resposta à minha pergunta aqui

    
por theHeman 27.02.2015 / 08:55