Para usar a sintaxe de aspas simples, você precisa passar a string para o bash
shell e expor suas variáveis por meio de env
, por exemplo
$ sudo env MDBAUTH="$MDBAUTH" MDBUSER="$MDBUSER" MDBPASSWORD="$MDBPASSWORD" \
bash -c 'mongo "$MDBAUTH" -u "$MDBUSER" -p "$MDBPASSWORD"'
Aqui estão alguns outros exemplos:
$ sudo -i env FOO=FOO BAR=BAR bash -c 'grep -e FOO -e BAR <(set)'
BAR=BAR
BASH_EXECUTION_STRING='grep -e FOO -e BAR <(set)'
FOO=FOO
SUDO_COMMAND='/bin/sh -c env FOO=FOO BAR=BAR bash -c grep\ -e\ FOO\ -e\ BAR\ <(set)'
$ sudo env FOO=FOO BAR=BAR bash -c 'echo $FOO $BAR'
FOO BAR
Ao usar aspas duplas, você precisa dessas variáveis definidas em seu shell local (no momento da execução do comando), por exemplo:
sudo -i mongo "$MDBAUTH" -u "$MDBUSER" -p "$MDBPASSWORD"
Para ver se as variáveis são definidas e analisadas corretamente, prefixe o comando inteiro com echo
. Se as variáveis estiverem vazias, elas precisam ser definidas primeiro.