O "redirecionamento ambíguo" refere-se ao fragmento 2>$data
. Isso indica que o valor da variável data
não se expande para exatamente uma palavra.
Dada a maneira como você o define, é mais provável que o valor de data
esteja vazio porque o comando tempfile
falhou. Você está, por algum motivo, ocultando qualquer mensagem de erro emitida por tempfile
. Remova o redirecionamento:
data=$(tempfile)
O utilitário tempfile
é um utilitário Debian, que você não encontrará fora do Debian e derivados como Ubuntu e Linux Mint. É provável que você esteja executando esse script em um sistema que não tenha esse utilitário. Você pode usar o utilitário similar mktemp
, que está amplamente disponível.
data=$(mktemp)
Além disso, como você está armazenando dados confidenciais, é necessário garantir que o arquivo temporário não seja legível.
data=$(umask 077; mktemp)
Dito isto, criar um arquivo temporário é mais complexo do que o necessário. Em vez disso, instrua dialog
para imprimir os dados em sua saída padrão e use uma substituição de comando.
#!/bin/bash
password=$(dialog --title "Password" \
--clear \
--passwordbox "Enter your password" 10 30 \
--stdout)
ret=$?
…