shell for循环和数组应用
2012-07-15 14:25
323 查看
想实现的功能:
读取一个文件,把每一行赋值给一个数组的变量,然后用for循环打印出来
下面是在china unix上看到大侠的shell数组的学习
声明数组
1)array[key]=value # array[0]=one,array[1]=two
2)declare
-a array # array被当作数组名
3)array=(
value1 value2 value3 ... )
4)array=(
[1]=one [2]=two [3]=three ... )
5)array="one
two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身
访问数组
1)${array[key]}
# ${array[1]}
删除数组
1)unset
array[1] # 删除数组中第一个元素
2)unset
array # 删除整个数组
计算数组的长度
1)${#array}
2)${#array[0]}
#同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别
提取数组
从尾部开始提取:
array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three
子串删除
[root@localhost dev]# echo ${array[@]:0}
one two three four
[root@localhost
dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
one
two e four
[root@localhost
dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
one
tw three four
[root@localhost
dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
one
tw three four
子串替换
root@localhost
dev]# array=( [0]=one [1]=two [2]=three [3]=four )
所有匹配到的,会被替换
[root@localhost
dev]# echo ${array[@] /o/m}
mne
twm three fmur
[root@localhost
dev]# echo ${array[@] //o/m}
mne
twm three fmur
[root@localhost
dev]# echo ${array[@] //o/}#替换为空,相当于删除
ne
tw three fur
替换字符串前端子串
[root@localhost
dev]# echo ${array[@] /#o/k}
kne
two three four
替换字符串后端子串
[root@localhost
dev]# echo ${array[@] /%o/k}
one
twk three four
读取一个文件,把每一行赋值给一个数组的变量,然后用for循环打印出来
#!/bin/sh i=1 SUM=`sed -n '$=' tmp.txt` #计算文件的总行数 echo "$SUM" while read line do arr[$i]="$line" i=`expr $i + 1` done < tmp.txt echo "$i" i=1 for i in `seq $SUM` ;do echo "${arr[$i]}" done
下面是在china unix上看到大侠的shell数组的学习
声明数组
1)array[key]=value # array[0]=one,array[1]=two
2)declare
-a array # array被当作数组名
3)array=(
value1 value2 value3 ... )
4)array=(
[1]=one [2]=two [3]=three ... )
5)array="one
two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身
访问数组
1)${array[key]}
# ${array[1]}
删除数组
1)unset
array[1] # 删除数组中第一个元素
2)unset
array # 删除整个数组
计算数组的长度
1)${#array}
2)${#array[0]}
#同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别
提取数组
从尾部开始提取:
array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three
子串删除
[root@localhost dev]# echo ${array[@]:0}
one two three four
[root@localhost
dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
one
two e four
[root@localhost
dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
one
tw three four
[root@localhost
dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
one
tw three four
子串替换
root@localhost
dev]# array=( [0]=one [1]=two [2]=three [3]=four )
所有匹配到的,会被替换
[root@localhost
dev]# echo ${array[@] /o/m}
mne
twm three fmur
[root@localhost
dev]# echo ${array[@] //o/m}
mne
twm three fmur
[root@localhost
dev]# echo ${array[@] //o/}#替换为空,相当于删除
ne
tw three fur
替换字符串前端子串
[root@localhost
dev]# echo ${array[@] /#o/k}
kne
two three four
替换字符串后端子串
[root@localhost
dev]# echo ${array[@] /%o/k}
one
twk three four
相关文章推荐
- shell for循环与数组应用介绍
- shell for循环案例:自动批量添加iptables应用端口规则 推荐
- shell的FOR循环应用实例
- 2017-12-21 for循环和数组的应用(购物金额的合计)
- Shell笔记8——for和select循环的应用实践
- shell 编程 for 循环详解及应用实例
- 学习总结 for循环语句的应用
- shell基础之四:函数、死循环及for,while特殊用法
- for循环的应用
- expect 嵌入shell的for循环中的方式对比
- js_for循环应用之生成轮播
- C#基础总结之三循环控制-for-数组-乘法表-arraylist
- Shell的 for 循环小例子
- Shell中的循环语句for、while、until实例讲解
- Shell for&while 循环详细总结
- shell中for循环用法
- shell for 循环、查看文件大小、计算文件md5
- shell脚本for循环知识
- for 循环删除数组里面的多个对象 需要用到 removeObjectsAtIndexes
- 预习 for 循环的使用和数组的概念