我想設置數組元素與循環: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]
所以這是行不通的。 如何..?
我想設置數組元素與循環: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。
有一個與你的echo語句的問題:給${array[0]}
和${array[1]}
它應該工作,如果你宣佈你爲數組變量,並正確打印:
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]}
看到它在行動here 。
HTH
我就這一循環:
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是最通用的,例如,得到的前10 PID的名稱中使用bash流程進入陣列(如果沒有10這樣的過程可能返回一個數組大小< 10):
readarray array -t -n 10 < <(pgrep -f bash)
增加了readarray,它可以輕鬆地允許嵌入的空白 – sehe 2011-12-18 19:52:41
# 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的
你知道seq命令嗎?你可以用$(seq 0 9) – Miquel 2011-12-17 16:06:22
@Miquel:或者只是'{0..9}'替換你的數字。 – 2011-12-17 16:08:57
你需要小心,因爲有些炮彈沒有陣列。如果你想寫可移植的sh,你根本不能使用數組。 – 2011-12-17 16:49:43