Loop de script Bash com zero paddings para os números

0

Portanto, preciso tentar repetidamente enviar um número de 4 dígitos para uma porta no host local e, em seguida, avaliar a resposta que recebo da porta se ela contiver uma string específica, o que faço com grep . Eu usei algo como echo {0000...9999} | nc localhost port . No entanto, não consigo obter essa expansão de seqüência agradável que recebo desse comando para trabalhar em um script bash. Como eu poderia escrever um script bash para esse problema?

    
por sarpu 26.03.2018 / 09:55

2 respostas

2

Você pode usar em for-loop da seguinte forma:

for i in {0001..9999}; do
    grep -q 'specificString' <<<"$(nc localhost $i)" && \
    echo "found on $i" || echo "not found on $i";
done
    
por 26.03.2018 / 10:21
0

Para shells que não suportam expansões de chaves, ou que não preservam o preenchimento zero:

i=0
while [ "$i" -le 9999 ]; do
    printf '%04d\n' "$i"
    i=$(( i + 1 ))
done | nc ...other options... | grep ...etc...
    
por 26.03.2018 / 10:39