Newsgroup: it.comp.os.linux.iniziare
Titolo: BASH_VERSINFO

Sto facendo uno script in bash (su debian), e mi sono accorto che tra la
versione bash 4.4 e la versione 4.3, il comportamento di "read" è diverso.
 
Poichè fose lo pubblicherò su github, o su sourcefrge, volevo fare un
controllo della versione.
 
Mi sapete dire se l'array BASH_VERSINFO è sempre presente, o è solo una
prerogativa di alcune distro?
 
 
-- 
--- GoldED 2.40
 * Origin: SBDI-Bbs: Redazione di SoundBlaster Digest ITALIA (2:335/332)

 prerogativa di alcune distro?
 
Eccolo:
$: echo $BASH_VERSINFO
5
 
$: set | grep BASH_VERSINFO
BASH_VERSINFO=([0]="5" [1]="0" [2]="3" [3]="1" [4]="release" [
5]="x86_64-pc-linux-gnu")
 
Per quest'ultimo con set, c'e' modo di evitare il grep? ciao
 
Ah.. sto con:
4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux
 
ma solo il kernel e' bloccato alla 10, il resto e' tutto al default
della oldstable ariciao
 
-- 
Yoda
 

 Per quest'ultimo con set, c'e' modo di evitare il grep? ciao
 
echo ${BASH_VERSINFO[@]}
;
printf "%s\n" ${BASH_VERSINFO[@]}
;
printf " ---> %s\n" ${BASH_VERSINFO[@]}
;
printf "%s\n" "${BASH_VERSINFO[@]}"|nl
;
for ((i=0;i<${#BASH_VERSINFO[@]};++i));do printf "$i %s\n" "${BASH_VERSINFO[i]}";done
;
for i in "${!BASH_VERSINFO[@]}";do printf "[%s]=%s " "$i" "${BASH_VERSINFO[i]}";done;echo
;
paste -d = <(printf "[%s]\n" "${!BASH_VERSINFO[@]}") <(printf "%q\n" "${BASH_VERSINFO[@]}")
 
        ;)   (infatti non ho usato il "grep"!)
 
 
Vedo che usi bash 5.0, e debian olstable,ok.
Aspetto risposte da altre distro.
 
    GRAZIE!
 
 
 
N.B. Il problema di "read", è l'accoppiata coi parametri "-n" e "-t", che in
4.3, se si inseriscono meno caratteri di "-n" nel tempo "-t", esce stringa
vuota (debian etch).
 
In debian stretch (bash 4.4), esce con i caratteri inseriti anche se sono
minori di "-n".
 
-- 
--- MQ2.13/PointMail 2.1Demo
 * Origin: PORT-ENFANT Contenitore per trasporto di elefanti (2:332/218.2)

 prerogativa di alcune distro?
 
Ecco:
 
solus ~ $ echo ${BASH_VERSINFO[@]}
5 1 16 1 release x86_64-solus-linux-gnu
 
solus ~ $  set | grep BASH_VERSINFO
BASH_VERSINFO=([0]="5" [1]="1" [2]="16" [3]="1" [4]="release" [5]="x86_64-
solus-linux-gnu")

 prerogativa di alcune distro?
 
man bash
 
...direi...
 
E ci dice nulla riguardo la disponibilita`,
per cui si suppone sia _sempre_ disponibile.
 
Se ti poni il problema con quella variabile,
cosa ne sara` di tutte le altre?
Od ogni volta che devi usare una qualche
variabile di bash?
 
La soluzione e` specificare sempre il
sistema su cui si e` _testato_ il tutto.
 
bye,
 
-- 
 
piergiorgio
 

In date: Mon, 08 May 2023 20:58:44 on group: it.comp.os.linux.iniziare,

Grazie anche a te, quindi direi che pposso tranquillamente usare quella
variabile per fare il test esatto della versione.
 
 
-- 
--- Point Manager 3.10 Unreg.
 * Origin: Dr Livingstone,I Suppose ..? (2:334/100.14)

 sistema su cui si e` _testato_ il tutto.
 
Purtroppo non avendo modo di testare in altri sistemi, ho preferito chiedere.
E' un lavoro piuttosto corposo (più di 3700 righe ed oltre 140K)!
 
Come ho risposto a Yoda, avendo trovato che in 2 sottoversioni di bash 4 avevo
2 comportamenti diversi della stessa funzione builtin...
 
 
-- 
--- GoldED 2.40
 * Origin: "Oggi l'rh, chi piu' chi meno ce l'hanno tutti! (2:331/113.1)

 2 comportamenti diversi della stessa funzione builtin...
 
Il problema sara` sempre lo stesso.
 
O sei in grado di testare dove avverra`
l'installazione, oppure dovrai specificare
dove e` stato testato.
 
La parola chiave e` sempre "test".
 
Perche` puo` benissimo essere che tu
riceva qui 10 risposte positive, ma
dove installi non funziona...
 
bye,
 
-- 
 
piergiorgio