星期三, 五月 30, 2007

bash array (1D)

sh$ names=(Roc Chowroc Zhou)
sh$ echo $names
Roc
sh$ echo ${names[@]}
Roc Chowroc Zhou
sh$ echo ${#names[@]}
3
sh$ echo ${names[1]}
Chowroc

sh$ names="Roc Chowroc Zhou"
sh$ echo $names
Roc Chowroc Zhou
sh$ echo ${names[@]}
Roc Chowroc Zhou Chowroc Zhou
# why?

sh$ echo ${#names[@]}
3
sh$ echo ${names[2]}
Zhou

sh$ i=2
sh$ echo ${names[$i]}
Zhou
sh$ echo ${#names[$i]}
4
sh$ echo ${#names[1]}
7

# 追加和插入数组元素
sh$ names=(Roc Chowroc Zhou)
sh$ names=(${names[@]} Test)
sh$ echo ${names[@]}
Roc Chowroc Zhou Test
sh$ names=( Roc Chowroc Zhou)
# 注意有空格
sh$ echo ${names[@]}
Roc Chowroc Zhou
sh$ x="TEST"
sh$ names=($x Roc Chowroc Zhou )
sh$ echo ${names[@]}
TEST Roc Chowroc Zhou

sh$ names=('Roc Zhou' 'roc' 'chowroc')
# 注意,这里希望引号里面的内容作为一个元素,即使有空格
sh$ echo ${#names[@]}
3
sh$ echo ${names[2]}
chowroc
sh$ echo ${names[0]}
Roc Zhou

# 更改元素内容:
sh$ names[2]='testing'
sh$ echo ${names[@]}
Roc Zhou roc testing
# 如果是数字:
sh$ a=(1 2 3)
sh$ ((a[1]++))
sh$ echo ${a[@]}
1 3 3
参考:

http://www.tech-recipes.com/bourne_shell_scripting_tips636.html

http://www.faqs.org/docs/bashman/bashref_71.html

没有评论: