Shell脚本数组

我想用循环设置数组元素:

for i in 0 1 2 3 4 5 6 7 8 9 do array[$i] = 'sg' done echo $array[0] echo $array[1] 

所以这是行不通的。 如何..?

删除空格:

 array[$i]='sg' 

此外,你应该访问元素为*

 echo ${array[0]} 

参见例如http://tldp.org/LDP/abs/html/arrays.html


*感谢@Mat提醒我这个!

它应该工作,如果你已经声明你的变量为数组,并正确地打印它:

 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]} 

在这里看到它的行动。

HTH

你的echo语句有问题:给${array[0]}${array[1]}

 # 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 

输出:

谷歌
雅虎

Blekko的
Rediff的

我采取这个循环:

 array=( $(yes sg | head -n10) ) 

甚至更简单:

 array=( sg sg sg sg sg sg sg sg sg sg ) 

有关证明,请参阅http://ideone.com/DsQOZ 。 还要注意,bash 4+ readarray:

 readarray array -t -n 10 < <(yes "whole lines in array" | head -n 10) 

事实上,readarray是最通用的,例如,获得名称为bash的前10个进程的PID到数组(如果没有10个这样的进程,可以返回数组大小<10):

 readarray array -t -n 10 < <(pgrep -f bash)