Se \ $ var não for \!

0

Eu tenho um script que atualmente produz um resultado como este:

...
Processing !
Processing $6$vxVOJhOX$U2flG.WASP1fEsqNy1Q0S9YROgdNJi9TTC8Gn74Al4w03unxr4qtHeaeRl8sWsGLG4Om5WbUJVsqNaCD4t4tG.
Processing !
Processing $6$ehmLTmoj$VP72RBNibmjwngQxMrW0kiyax/wJHiV0ugv/8J2RJnCwNxTIBLGJ.A4t5ryZv6lQTyheoA6N0VianZC5QI7Rp1
Processing !
Processing !
...

Eu quero filtrar entradas com apenas ! .

Estou tentando o seguinte, com e sem escape no \! :

while read -r line ; do
  if ! [ \$line = \! ]; then
    echo "Processing $line"
  fi
done

Como posso verificar se uma variável contém um único ! ?

    
por Philip Kirkbride 01.08.2017 / 02:41

1 resposta

1
  1. Sua saída de amostra tem mais texto na linha ("Processando") e
  2. Você escapou do cifrão em \$line , impedindo a expansão das variáveis.

Tente:

while read -r line; do 
  if ! [ "$line" = "Processing !" ]; then 
    echo processing line "$line"; 
  fi
done

Ou, se a sua entrada estiver sendo fornecida pelo script de amostra, basta comparar $line to \! :

while read -r line; do 
  if ! [ "$line" = \! ]; then 
    echo processing line "$line"; 
  fi
done

ou talvez mais diretamente:

while read -r line; do 
  if [ "$line" != \! ]; then 
    echo processing line "$line"; 
  fi
done
    
por 01.08.2017 / 03:03

Tags