Você pode usar um for
-loop que passa por cada item e verifica a contagem de caracteres com o comando wc -m
.
Aqui está o seu script, editado. Peço desculpas se eu usar uma sintaxe diferente para looping, mas é exatamente isso que eu estou acostumado.
serg@ubuntu[/home/xieerqi]
$ cat stations.sh
#!/bin/bash
echo -n "Which station or stations you want to download?"
read station
for item in $station; do
NUM=$(printf $item | wc -m)
if [ $NUM -gt 4 ]; then
echo "Error: number of chars in $item greater than 4"
exit 1
fi
done
ELEMENTS=${#station[@]}
for (( i=0;i<$ELEMENTS;i++)); do
echo you chose ${station[${i}]} stations to download data
done
serg@ubuntu[/home/xieerqi]
$ ./stations.sh
Por exemplo Se os nomes da sua estação forem asdf
, yolo
e swag
, você escolheu o parâmetro asdf yolo swag
para fazer o download de dados:
serg@ubuntu[/home/xieerqi]
$ ./stations.sh
Which station or stations you want to download? asdf qwerty swag
Error: number of chars in qwerty greater than 4
Observe que uso printf, não echo. O echo produz uma linha adicional adicional, o que atrapalha a contagem de caracteres. Se você preferir usar o eco, use echo -n
para evitar a impressão dessa nova linha