[Risolto] Bash 4.4.0 - break, continue e loop funzioni

Bash, Perl, Python, Ruby, ...

[Risolto] Bash 4.4.0 - break, continue e loop funzioni

Messaggioda gajm » 15/10/2016, 13:15

Due banali script d'esempio:
Codice: Seleziona tutto
#!/bin/bash

while :; do
    read var
    if [ "$var" == "a" ]; then
        echo "$var"
    else
        break
    fi
done

Codice: Seleziona tutto
#!/bin/bash

main() {
    read var
    if [ "$var" == "a" ]; then
        echo "$var"
    else
        break
    fi
}

while :; do
    main
done

Fino all'arrivo di bash 4.4.0 entrambi gli script funzionano senza errori. Il break, se non si immette "a", interrompe il ciclo.
Ma ora su Stretch il secondo script, in cui il loop si trova in una funzione, restituisce un:
Codice: Seleziona tutto
riga 8: break: significativo solo in un ciclo "for", "while" o "until"

Non sono riuscito a trovare nulla in rete. È cambiato qualcosa nelle funzioni? Posso ipotizzare che si tratti di un bug?
Ultima modifica di gajm il 15/10/2016, 15:13, modificato 1 volta in totale.
gajm
Jr. Member
Jr. Member
 
Messaggi: 64
Iscritto il: 23/08/2016, 13:20

Re: Bash 4.4.0 - break, continue e loop funzioni

Messaggioda s3v » 15/10/2016, 14:22

Sì, era un bug che ora è stato corretto:
http://tiswww.case.edu/php/chet/bash/CHANGES
xx. Fixed a bug that could allow `break' or `continue' executed from shell
functions to affect loops running outside of the function.
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5589
Iscritto il: 31/12/2008, 11:54

Re: Bash 4.4.0 - break, continue e loop funzioni

Messaggioda gajm » 15/10/2016, 14:56

Grazie s3v.
Vedo che nel changelog il fix è indicato per queste versioni:
This document details the changes between this version, bash-4.4-alpha, and
the previous version, bash-4.3-release.

Direi che allora non è risolto. :(

EDIT: Girovagando sulla mailinglist mi sono imbattuto in questo:
http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00036.html
Che mi fa presumere si tratti di un cambiamento intenzionale.

Anche se a malincuore, aggiungo il "risolto" al 3d.
gajm
Jr. Member
Jr. Member
 
Messaggi: 64
Iscritto il: 23/08/2016, 13:20


Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti