O valor de retorno da substituição do comando é o stdout do subshell.
Na linha a seguir, você redirecionou a saída para o arquivo lol
dentro da subcamada. portanto, não há valor de retorno para você armazenar na variável pass
:
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)
Você pode dividir a seguinte linha em dois da seguinte forma:
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1)
echo "$pass" >> lol
Ou use tee -a
:
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 | tee -a lol)