programmazione bash: esiste un ciclo do-while?

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
cesconix
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mer 29 dic 2004, 0:00
Nome Cognome: Francesco Pasqua
Slackware: slackware64 -current
Kernel: 2.6.35.7
Desktop: Xfce
Località: Catania

programmazione bash: esiste un ciclo do-while?

Messaggio da cesconix »

Sapete se esista il ciclo do-while su bash?

Avatar utente
MAT
Linux 4.x
Linux 4.x
Messaggi: 1242
Iscritto il: mer 9 mar 2005, 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena

Messaggio da MAT »


Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

Che io sappia no... Puoi ovviare con un break:

Codice: Seleziona tutto

a=0
while true; do
  echo ciao
let a++
[ $a == "5" ] && break
done
Per fare un for "alla C" comunque si fa cosí:

Codice: Seleziona tutto

for((a=0;a<=5;a++)); do
  echo ciao
done

Avatar utente
cesconix
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mer 29 dic 2004, 0:00
Nome Cognome: Francesco Pasqua
Slackware: slackware64 -current
Kernel: 2.6.35.7
Desktop: Xfce
Località: Catania

Messaggio da cesconix »

ovvio che già avevo cercato...e il do-while non l'ho mai notato e in quella pagina non c'è

Avatar utente
l1q1d
Master
Master
Messaggi: 1862
Iscritto il: lun 21 feb 2005, 0:00
Località: In uno spazio n-dimesionale
Contatta:

Messaggio da l1q1d »

certo

Codice: Seleziona tutto

 while test-commands; do consequent-commands; done

Avatar utente
cesconix
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mer 29 dic 2004, 0:00
Nome Cognome: Francesco Pasqua
Slackware: slackware64 -current
Kernel: 2.6.35.7
Desktop: Xfce
Località: Catania

Messaggio da cesconix »

certo
Codice:
while test-commands; do consequent-commands; done
questo è un normale ciclo while. Io cerco un do-while.

Avatar utente
MAT
Linux 4.x
Linux 4.x
Messaggi: 1242
Iscritto il: mer 9 mar 2005, 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena

Messaggio da MAT »

Un do-while lo puoi trasformare senza problemi in un altro ciclo (while-do o for, come ti è stato mostrato).

Avatar utente
cesconix
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mer 29 dic 2004, 0:00
Nome Cognome: Francesco Pasqua
Slackware: slackware64 -current
Kernel: 2.6.35.7
Desktop: Xfce
Località: Catania

Messaggio da cesconix »

appunto io inizialmente avevo scritto lo script arrangiandomi con un while normale

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

sì, il ciclo do-while esiste, e ha la seguente struttura:

Codice: Seleziona tutto

until command
 do
        commands
 done
ciao!

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

Paoletta ha scritto:sì, il ciclo do-while esiste, e ha la seguente struttura:

Codice: Seleziona tutto

until command
 do
        commands
 done
ciao!
Non sono d'accordo, do...while (quello di C) quello che c'è all'interno del costrutto almeno una volta lo esegue, until no.

Avatar utente
cesconix
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mer 29 dic 2004, 0:00
Nome Cognome: Francesco Pasqua
Slackware: slackware64 -current
Kernel: 2.6.35.7
Desktop: Xfce
Località: Catania

Messaggio da cesconix »

appunto...il do-while è fatto apposta che il ciclo lo esegue almeno una volta per poi verificare la condizione alla fine

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

ma allora perchè i progettisti della bash hanno fatto while e until in modo che funzionassero alla stessa maniera? qualche differenza dovranno pur averla...premetto che non ho mai usato until

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

Infatti until non si usa quasi mai.
man bash ha scritto: The while command continuously executes the do list as long as
the last command in list returns an exit status of zero. The
until command is identical to the while command, except that the
test is negated.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

chiarito il dubbio: until esce qundo la condizione è verificata, while quando non lo è; ma entrambi non sono come il do-while del C;

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

post contemporaneo!

Rispondi