vorrei impostare elementi di un array con il ciclo:Shell array di script
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i] = 'sg'
done
echo $array[0]
echo $array[1]
Così non funziona. Come ..?
vorrei impostare elementi di un array con il ciclo:Shell array di script
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i] = 'sg'
done
echo $array[0]
echo $array[1]
Così non funziona. Come ..?
Rimuovere gli spazi:
array[$i]='sg'
Inoltre, si dovrebbe accedere agli elementi come *:
echo ${array[0]}
Vedi esempio http://tldp.org/LDP/abs/html/arrays.html.
c'è problema con la sua dichiarazione di eco: danno ${array[0]}
e ${array[1]}
Dovrebbe funzionare se si fosse dichiarata la variabile come array e stampare in modo corretto:
declare -a array
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i]="sg"
done
echo ${array[0]}
echo ${array[1]}
vederlo in azione here .
HTH
mio prendere su quel ciclo:
array=($(yes sg | head -n10))
O ancora più semplice:
array=(sg sg sg sg sg sg sg sg sg sg)
Vedi http://ideone.com/DsQOZ per qualche prova. Nota anche, bash 4 + readarray:
readarray array -t -n 10 < <(yes "whole lines in array" | head -n 10)
In effetti, readarray è più versatile, ad es. ottenere i primi 10 PID di processi con bash nel nome in matrice (che potrebbe restituiscono un formato matrice < 10 se non ci sono 10 tali processi):
readarray array -t -n 10 < <(pgrep -f bash)
ha aggiunto readarray, che ha il suo posto per consentire facilmente lo spazio bianco incorporato – sehe
# Declare Array
NAMEOFSEARCHENGINE=(Google Yahoo Bing Blekko Rediff)
# get length of an array
arrayLength=${#NAMEOFSEARCHENGINE[@]}
# use for loop read all name of search engine
for ((i=0; i<${arrayLength}; i++));
do
echo ${NAMEOFSEARCHENGINE[$i]}
done
uscita:
Google
Yahoo
Bing
Blekko
Rediff
Conosci il comando seq? puoi sostituire i tuoi numeri con $ (seq 0 9) – Miquel
@Miquel: o solo '{0..9}'. –
È necessario fare attenzione, poiché alcune shell non hanno array. Se si desidera scrivere sh portatile, non è possibile utilizzare gli array. –