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:
- Existe uma maneira de suprimir esse aviso apenas para este script?
- 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