ciclo assurdo di bash [solved]

Tutte le discussioni direttamente correlabili all'informatica e/o a GNU/*nix.

Moderator: ago

Post Reply
User avatar
cloc3
Advocate
Advocate
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:

ciclo assurdo di bash [solved]

Post 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?
Last edited by cloc3 on Tue Oct 08, 2024 7:29 pm, edited 1 time in total.
vu vu vu
gentù
mi piaci tu
User avatar
fedeliallalinea
Administrator
Administrator
Posts: 31976
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:

Re: ciclo assurdo di bash.

Post 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.
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Post Reply