shell里的数组类似与python里的列表或元组 [root@up12 ~]# a=(11 22 33 44 55 66)[root@up12 ~]# echo ${a[1]}22[root@up
shell里的数组类似与python里的列表或元组
[root@up12 ~]# a=(11 22 33 44 55 66)[root@up12 ~]# echo ${a[1]}22[root@up12 ~]# echo ${a[2]}33[root@up12 ~]# echo ${a[3]}44[root@up12 ~]# echo ${a[@]}11 22 33 44 55 66[root@up12 ~]# echo ${a[*]}11 22 33 44 55 66[root@up12 ~]#
for i in $@ //遍历数组
[root@up12 ~]# up=(`uptime`)[root@up12 ~]# for i in "${up[@]}";do> echo $i> done11:11:02up1:50,5users,loadaverage:0.00,0.00,0.00[root@up12 ~]# echo ${up[*]}11:11:02 up 1:50, 5 users, load average: 0.00, 0.00, 0.00[root@up12 ~]# echo ${up[7]/,/}0.00[root@up12 ~]# echo ${up[7]}0.00,[root@up12 ~]# echo ${up[7]} |tr -d ","0.00[root@up12 ~]#
[root@up12 ~]# echo ${a[*]}11 22 33 44 55 66[root@up12 ~]# aa=uplooking[root@up12 ~]# echo ${aa}uplooking[root@up12 ~]# echo ${#aa} //统计长度9[root@up12 ~]# echo ${#a[*]} //统计数组的长度6[root@up12 ~]#
declare
read -a 也可以得到数组
[root@up12 ~]# ips=(`ifconfig eth0 |grep 'inet addr' |cut -d ":" -f2 `)[root@up12 ~]# echo ${ips}192.168.30.153[root@up12 ~]# echo ${ips[0]}192.168.30.153[root@up12 ~]# echo ${ips[1]}Bcast[root@up12 ~]# echo ${ips[*]}192.168.30.153 Bcast[root@up12 ~]#
变量处理
[root@up12 ~]# pp="/opt/for-linux/regex.rst"
[root@up12 ~]# basename $pp
regex.rst
[root@up12 ~]# dirname $pp
/opt/for-linux
[root@up12 ~]# echo ${pp}
/opt/for-linux/regex.rst
[root@up12 ~]# echo ${pp##*/} //从左往右最大匹配,去掉/左边的所有 与basename功能一样
regex.rst
[root@up12 ~]# echo ${pp%/*} //从右往左最小匹配 去掉/右边的所有 与dirname功能一致
/opt/for-linux
[root@up12 ~]# echo ${pp%%/*} //从右往左最大匹配
[root@up12 ~]# echo ${pp#*/} //从左往右最小匹配
opt/for-linux/regex.rst
[root@up12 ~]#
[root@up12 ~]# echo ${bb}
www.uplooking.com
[root@up12 ~]# echo ${bb#*.}
uplooking.com
[root@up12 ~]# echo ${bb##*.}
com
[root@up12 ~]# echo ${bb/./-} //将.替换为-
www-uplooking.com
[root@up12 ~]# echo ${bb/./-/}
www-/uplooking.com
[root@up12 ~]# echo ${bb//./-}
www-uplooking-com
[root@up12 ~]#
echo ${count:-1} //如果count的值为空,临时给他赋值为1
echo ${count:=1} //如果count的值为空,直接给他赋值为1
echo ${count:+77} //如果count有值,临时赋值为77[root@up12 ~]# bb="www.uplooking.com"
echo ${count:?}
[root@up12 ~]# echo ${bb}
www.uplooking.com
[root@up12 ~]# echo ${bb:}
bash: ${bb:}: bad substitution
[root@up12 ~]#
[root@up12 ~]# echo ${bb:2:5}
w.upl
[root@up12 ~]#
echo ${count:?Error...}
相当于
if [ -z "$count" ]
echo "Error..."
exit 1
fi
[root@up12 ~]# echo ${count:?Error...}
bash: count: Error...
[root@up12 ~]# echo ${count:?Error...};echo okok
bash: count: Error...
[root@up12 ~]# echo ${count:?变量不存在...};echo okok
bash: count: 变量不存在...
[root@up12 ~]#
下面这三句的结果是一样的
echo ${count:=1} >>/dev/null //不会显示在屏幕
true ${count:=1}
: ${count:=1}
字符串的截取
[root@up12 ~]# bb="www.uplooking.com"[root@up12 ~]# echo ${bb}www.uplooking.com[root@up12 ~]# echo ${bb:}bash: ${bb:}: bad substitution[root@up12 ~]# [root@up12 ~]# echo ${bb:2:5}w.upl[root@up12 ~]#
生肖
方法一:体力编程-if
1 #!/bin/bash 2 #猴 鸡 狗 猪 鼠 牛 虎 兔 龙 蛇 马 羊 3 #0 1 2 3 4 5 6 7 8 9 10 11 4 # 5 6 read -p "请输入年份:" year 7 8 a=$(($year%12)) 9 10 if [ "$a" = 0 ] ;then 11 echo "猴年" 12 elif [ "$a" = 1 ] ;then 13 echo "鸡年" 14 elif [ "$a" = 2 ] ;then 15 echo "狗年" 16 elif [ "$a" = 3 ] ;then 17 echo "猪年" 18 elif [ "$a" = 4 ] ;then 19 echo "鼠年" 20 elif [ "$a" = 5 ] ;then 21 echo "牛年" 22 elif [ "$a" = 6 ] ;then 23 echo "虎年" 24 elif [ "$a" = 7 ] ;then 25 echo "兔年" 26 elif [ "$a" = 8 ] ;then 27 echo "龙年" 28 elif [ "$a" = 9 ] ;then 29 echo "蛇年" 30 elif [ "$a" = 10 ] ;then 31 echo "马年" 32 elif [ "$a" = 11 ] ;then 33 echo "羊年" 34 fi
体力编程--case
1 #!/bin/bash 2 #猴 鸡 狗 猪 鼠 牛 虎 兔 龙 蛇 马 羊 3 #0 1 2 3 4 5 6 7 8 9 10 11 4 # 5 6 read -p "请输入年份:" year 7 8 a=$(($year%12)) 9 10 case "$a" in 11 0) 12 echo "猴年" 13 ;; 14 1) 15 echo "鸡年" 16 ;; 17 2) 18 echo "狗年" 19 ;; 20 3) 21 echo "猪年" 22 ;; 23 24 4) 25 echo "猪年" 26 ;; 27 5) 28 echo "牛年" 29 ;; 30 6) 31 echo "虎年" 32 ;; 33 7) 34 echo "兔年" 35 ;; 36 8)37 echo "龙年" 38 ;; 39 9) 40 echo "蛇年" 41 ;; 42 10) 43 echo "马年" 44 ;; 45 11) 46 echo "羊年" 47 ;; 48 esac
方法二:数组编程
1 #!/bin/bash 2 #猴 鸡 狗 猪 鼠 牛 虎 兔 龙 蛇 马 羊 3 #0 1 2 3 4 5 6 7 8 9 10 11 4 # 5 6 read -p "请输入年份:" year 7 8 i=(猴 鸡 狗 猪 鼠 牛 虎 兔 龙 蛇 马 羊) 9 10 11 echo " ${i[$(($year%12))]} " 12