Newsgroup: it.comp.os.linux.iniziare
Titolo: Array bash loop

 
 
Salve a tutti
 
Ho scritto uno script.sh che contiene un paio di array di stringhe:
 
File="Nomedelfile.txt"
 
declare -a XY=("qualche cosa" "qualche cosa" )
 
declare -a ZZ=( "ancora qualche cosa" "un altra cosa")
 
for  ciclo1 in "${XY[@]}"
do
 
for ciclo2 in "${ZZ[@]}"
do
 
all'interno dei due cicli devo utilizzare grep:
 
grep   -E  '$ciclo1.*$ciclo2'  $File >   file
 
* grep -E 'XFS.*UYT'  $File  > file
 
done
 
done
 
Il problema e che il comando grep non mi trova quello che dovrebbe  trovare.
Ho provato anche in un modo semplice: * grep -E 'XFS.*UYT'  File  > file e
la cosa funziona, ma leggendo i pattern/token dagli array,  grep non ha i
pattern nel modo corretto?, e quindi non  trova le stringhe ricercate.
 
 
Dove sbaglio?
 
Grazie a tutti
 
Ciao
 
 
 
 
 
 



 done
]zac[

 echo grep   -E  '$ciclo1.*$ciclo2'  $File
 
il comando che non funziona e questo:
 
grep   -E  '$ciclo1.*$ciclo2'  $File1
 
gli array sono cosi dichiarati:
declare -a XY=(
"XCF"
"AGH"
"ATY" )  anche il secondo e simile.
 
un comando come questo funziona.
 
grep -E   'SDF:*GFW'  $File


 echo grep   -E  '$ciclo1.*$ciclo2'  $File
 
 
l comando che non funziona e questo:
 
grep   -E  '$ciclo1.*$ciclo2'  $File1
 
gli array sono cosi dichiarati:
declare -a XY=(
"XCF"
"AGH"
"ATY" )  anche il secondo e simile.
 
un comando come questo da console  funziona.
 
grep -E   'SDF:*GFW'  $File


 grep   -E  '$ciclo1.*$ciclo2'  $File >   file
 
le variabili se le metti fra apci non vengono espanse.  Devi usare i 
doppi apici:  grep   -E  "$ciclo1.*$ciclo2"  $File >   file
 
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
https://giovanni.homelinux.net/
 >

 
]zac[
 
Cortesemente, rileggi quanto suggerito, si chiama debug del programma.
 
E' come se tu lamentassi un problema di una variabile che contiene un 
valore errato, ti viene suggerito di inserire un comando per stampare il 
valore mentre il programma è attivo, e tu rispondi la variabile che 
contiene il valore errato è questa.

 
"Giuseppe Della Bianca" <gius...@gmailNO.comNO> ha scritto nel messaggio
news:u62grp$2csip$1...@dont-email.me...

le variabili le ho fatte stampare a video e viene stampato quello
che contiengono gli array.
Con il consiglio di Giovanni, mettere le " al posto di ' ho risolto
adesso lo script funziona.
Grazie a tutti e due!
 
Ciao
 
 
 

 contiengono gli array.
]zac[
 
Se avessi prestato attenzione al suggerimento e al testo riportato avresti 
notato che proprio a causa delle ' ' le variabili non venivano sostituite 
con il loro contenuto.
 
export ciclo1=frot
export ciclo2=tole
 
$ echo grep   -E  '$ciclo1.*$ciclo2'  $File
 
grep -E $ciclo1.*$ciclo2
 
 
$echo grep   -E  "$ciclo1.*$ciclo2"  $File
 
grep -E frot.*tole

 
"Giuseppe Della Bianca" <gius...@gmailNO.comNO> ha scritto nel messaggio
news:u64ejp$2mppg$1...@dont-email.me...

 quello che avevo fatto prima di chiedere qui sul NG,    e mettere sia i
doppi apici
che le singole apici, ma non ha funzionato! :-)
 
  " '$ciclo1.*$ciclo2' " $File