Isso:
test.sh: line 22: syntax error: unexpected "(" (expecting "fi")
não é uma mensagem de erro que bash
reporta. É um que o shell Almquist e seus derivados como dash
ou busybox sh
reportam:
$ grep -z '(expecting' /bin/dash
%s unexpected (expecting %s)
As conchas baseadas em ash
não suportam matrizes, esse script é destinado a bash
(3.2 ou superior), como indica o #!/bin/bash
she-bang, embora pareça mais uma mistura entre bash
, zsh
e ksh93
sintaxe se for para verificar se há endereços IPv4 com quatro casas decimais em que as partes estão limitadas a 3 dígitos decimais (em bash
, isso daria alguns erros sobre 008.008.008.008
, por exemplo).
Com a sintaxe% POSI sh
padrão, que dash
e bash
reconhecem, você pode fazer em vez disso:
valid_ip() (
IFS=.
set -o noglob
set -- $1''
[ "$#" -eq 4 ] || exit
for i do
case $i in
("" | *[!0-9]*) exit 1;;
esac
[ "$i" -le 255 ] || exit
done
)