Page 1 of 1

ciclo assurdo di bash [solved]

Posted: Tue Oct 08, 2024 2:26 am
by cloc3
ho scoperto un programmino elementare di bash che, secondo me, ha un comportamento balordo:

Code: Select all

#!/bin/bash
n=1;
max=94;

while [[ $n < $max ]]; do
	echo $((n++));
done
n=1;
max=24;

while [[ $n < $max ]]; do
	echo $((n++));
done
echo stop
in output ottengo:

Code: Select all

...
89
90
91
92
93
1
2
stop
in pratica, ci sono due cicli di while identici.
il primo è impostato per essere eseguito fino al ciclo 94 (escluso), ed effettivamente esce al ciclo 93.
il secondo è impostato per essere eseguito fino al ciclo 24, ma esce al ciclo 2.

dove sta il guaio?

Re: ciclo assurdo di bash.

Posted: Tue Oct 08, 2024 5:27 am
by fedeliallalinea
cloc3 wrote:dove sta il guaio?
Che le comparazioni di numeri in bash si fanno con -lt, -eq, -gt,....
Se usi <, >, = per bash stai comparando stringhe.