arrays - variabile - script di shell




script bash, crea una matrice di tutti i file in una directory (2)

La tua soluzione funzionerà per la generazione dell'array. Invece di usare un ciclo while, usa un ciclo for:

#!/bin/bash
files=$( ls * )
counter=0
for i in $files ; do
  echo Next: $i
  let counter=$counter+1
  echo $counter
done

Ho una directory myDir di molti file .html. Sto cercando di creare un array di tutti i file nella directory in modo da poter indicizzare l'array e poter fare riferimento a determinati file html nella directory. Ho provato la seguente riga:

myFileNames=$(ls ~/myDir)

for file in $myFileNames; 
#do something

ma voglio essere in grado di avere una variabile contatore e avere una logica come la seguente:

 while $counter>=0;
   #do something to myFileNames[counter]

Sono abbastanza nuovo per lo scripting di shell e non sono in grado di capire come ottenerlo, quindi apprezzerei qualsiasi aiuto in merito.


Tu puoi fare:

# create an array with all the filer/dir inside ~/myDir
arr=(~/myDir/*)

# iterate through array using a counter
for ((i=0; i<${#arr[@]}; i++)); do
    #do something to each element of array
    echo "${arr[$i]}"
done

Puoi anche farlo per l'iterazione dell'array:

for f in "${arr[@]}"; do
   echo "$f"
done




while-loop