Como escapar do eco? [duplicado]

0

Edit: Eu percebi que isso não tem nada a ver com $() , é apenas o resultado de usar echo * . Então eu só preciso de uma maneira de escapar com echo .

Estou escrevendo um script que verifica o que os usuários não têm senhas comparando /etc/passwd e /etc/shadow .

Até agora eu tenho:

cat /etc/passwd | while read -r line ; do
  user=$(echo $line | cut -d ":" -f 1)
  password=$(cat /etc/shadow | grep $user | cut -d ":" -f 2)
  echo $password
done

O problema é que quando o resultado do meu grep é * para o campo de senha, que é o caso de todos os usuários sem uma senha, parece que ls * é executado? Por exemplo:

Estou confuso sobre o porquê isso está acontecendo. Alguém pode explicar o que está acontecendo aqui?

A única resposta na parte inferior da imagem com uma senha criptografada é o comportamento esperado. Para as entradas sem uma senha, eu esperava recuperar um * .

    
por Philip Kirkbride 09.07.2017 / 18:10

1 resposta

1
echo "$password"

Isso permitirá a interpolação da variável (aqui, em * ) sem invocar a globalização de shell.

    
por 09.07.2017 / 18:26

Tags