侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

20170210--shell:数组

2023-11-27 星期一 / 0 评论 / 0 点赞 / 69 阅读 / 6468 字

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                                    


 

广告 广告

评论区