Os argumentos devem ser citados, caso contrário, o shell valida caracteres especiais dentro desses argumentos:
echo "username:"$(openssl passwd -1 -salt "$salt" "$password")
Use aspas duplas aqui, que o shell avalia as variáveis.
Agora, o comando echo
deve ser citado também:
echo 'username:$1$salt$aldkjflsfj' | ...
Use aspas simples aqui, porque os sinalizadores $ fazem parte da entrada e devem persistir.
Aviso : não recomendo alterar a senha como esta. Esses comandos e, portanto, as senhas simples, podem ser vistas nas listagens de ps
e top
, por exemplo. openssl
tem um mecanismo para tais casos, para ler a senha de um arquivo.