Verifique se o argumento foi passado corretamente para um shell script

0

Estou escrevendo um script de shell no qual preciso passar um argumento sobre a execução. Minha pergunta é como verificar se o argumento é compatível com o padrão fornecido. Exemplo:

./script.sh 1 - 9

Neste exemplo, 1 - 9 thing é apenas um argumento e o padrão é "%s - %s" . Como verificar se corresponde ao padrão. Obrigado em conselhos

    
por Mitko Gurbanski 16.05.2017 / 02:12

1 resposta

0

Os três principais programas que eu uso em shell scripts são sed, grep e awk. O legal de cada um deles é expressões regulares. No shell, $ @ são todos os parâmetros posicionais, portanto você pode fazer echo de $ @ e canalizá-lo para awk ou grep.

echo $@ | awk '/\S+ - \S+/ {print}'

Com o grep você pode testar o valor de retorno, $ ?:

$ echo 1 - 9 | egrep '\S+ - \S+'
1 - 9
$ echo $?
0
$ echo  - 9 | egrep '\S+ - \S+'
$ echo $?
1

Verifique o valor de retorno com o teste:

ARGS="$@"
MATCH=$(echo "$ARGS" | egrep '^\S+ - \S+')
if [ $? = 0 ]
then
  echo "good match"
fi

Ou usando MATCH acima:

if [ -n "$MATCH" ]
then
  echo "good match"
fi
    
por 27.05.2017 / 06:22

Tags