Bash 脚本循环使用零填充数字

Bash 脚本循环使用零填充数字

因此,我需要反复尝试向本地主机上的端口提交一个 4 位数字,然后评估从该端口获得的响应是​​否包含特定字符串,我使用grep.我用过类似的东西echo {0000...9999} | nc localhost port。但是,我无法获得从该命令获得的良好序列扩展以在 bash 脚本中工作。我该如何编写 bash 脚本来解决这个问题?

答案1

您可以在类似以下内容中使用for-loop

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

答案2

对于不支持大括号扩展或不保留零填充的 shell:

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

相关内容