Como negar o operador de correspondência de expressão regular do Bash

0

O Bash tem o operador de correspondência de expressão regular =~ . Aqui é um exemplo de uso:

#!/bin/bash

input=$1


if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
#                 ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
  echo "Social Security number."
  # Process SSN.
else
  echo "Not a Social Security number!"
  # Or, ask for corrected input.
fi

Para negação, todos os exemplos que vi dependem de uma cláusula else . Para situações em que estou apenas interessado em correspondências negativas, existe uma maneira melhor de criar uma cláusula if não funcional?

Por exemplo, se eu apenas me importasse com o caso em que a entrada acima é não a Não é um número da Previdência Social, qual é o caminho certo para fazer isso?

    
por MountainX 24.10.2018 / 02:48

1 resposta

3

Você pode negar no nível superior:

if ! [[ …
    
por 24.10.2018 / 02:52