Sintácticamente, los siguientes dos fragmentos de código son correctos y equivalentes:
for f in bash/*.sh; do
sashacommand "$f"
done
for f in bash/*.sh
do sashacommand "$f"
done
Este último podría posiblemente decirse que es más difícil de leer ya que do
ofusca ligeramente el comando en el cuerpo del ciclo. Si el bucle contiene varios comandos y el siguiente comando está en una nueva línea, la ofuscación se resaltará aún más:
for f in *
do cmd1
cmd2
done
... pero marcarlo como un "error" es en mi humilde opinión la opinión personal de alguien más que una verdad objetiva.
Diría que si desea anteponer el comando en el bucle con do
, siéntase libre de hacerlo si eso hace que el código sea coherente y legible a los ojos de quien lo lea.
En general, casi cualquier ;
puede ser reemplazado por una nueva línea. Tanto ;
como la nueva línea son terminadores de comandos. do
es una palabra clave que significa "aquí sigue lo que debe hacerse (en este for
bucle )".
for f in *; do...; done
es lo mismo que
for f in *
do
...
done
y como
for f in *; do
...
done
y
for f in *
do...
done
La razón para usar uno sobre otro es la legibilidad y las convenciones de estilo local/personal.
Opinión personal:
En los encabezados de bucle que son muy largos , creo que puede tener sentido poner do
en una nueva línea, como en
for i in animals people houses thoughts basketballs bees
do
...
done
o
for i in \
animals \
people \
houses \
thoughts \
basketballs \
bees
do
...
done
Lo mismo ocurre con then
en una declaración if
.
Pero nuevamente, esto se reduce a las preferencias personales de estilo, o al estilo de codificación que esté usando el equipo/proyecto.
В Ubuntu 18.04
speedtest -cli, установленный apt:
$ speedtest-cli --server 2173
Retrieving speedtest.net configuration...
Testing from TPG Internet (<my IP>)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Internode (Sydney) [1.01 km]: 15.25 ms
Download: 84.62 Mbit/s
Upload: 3.82 Mbit/s
python (указанный выше )из speedtest -cli master:
$./speedtest.py --server 2173
Retrieving speedtest.net configuration...
Testing from TPG Internet (<my IP>)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Internode (Sydney) [1.01 km]: 14.583 ms
Download: 84.64 Mbit/s
Upload: 38.26 Mbit/s
Второй соответствует результату веб-страницы с той же машины.
Кстати, установка brew speedtest -cli на мой макбук, в той же сети дает тот же (более быстрый )результат, что и второй (, как и браузер на макбуке ). Очевидно, что apt установленный cli speedtest -имеет проблему, так как прямой python на той же машине не работает.