Bash для l oop делает только одну итерацию - PullRequest
0 голосов
/ 29 апреля 2020

Я не могу понять, что здесь происходит:

#! /bin/bash
set -e

for i in {0..24}
do
  echo "ping -c 1 10.11.1.$i"
  ping -c 1 10.11.1.$i
done

echo "done"

Если я запускаю это, он пингует первый хост и завершает работу. Странно, я даже не вижу окончательного «сделано» за пределами l oop. Если я удаляю команду ping, она печатает все как положено.

Может кто-нибудь сказать мне, почему это не будет работать? Bash версия 5.0.16 (1) - выпуск от $ BASH_VERSION

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Удалить set -e из сценария, чтобы продолжить, даже если ping сообщает о потере пакета.

0 голосов
/ 29 апреля 2020

изменить на:

for i in $(seq 0 24);

пример:

#!/bin/bash
for ip in $(seq 200 210); do
ping -c 1 192.168.31.$ip | grep "bytes from" | cut -d ' " -f4 | cut -d ":" -f1 &
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...