我想用循环设置数组元素:
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)