最新要闻
- 风暴袭击!美国多个州宣布进入紧急状态 道路能见度可能为零
- 快资讯:感受彼此体温 杰士邦超薄尊享30只礼盒装19.9元
- 世界资讯:乘联会喊话:千方百计增加居民收入 大家踊跃买汽车稳消费
- 环球报道:韩国载有216人客机飞行中出现异常:靠一台发动机平安降落
- 天天热文:特斯拉股价年内大跌60%!最大空头:明年可能会更惨
- 每日动态!还差14亿刀回本!《阿凡达2》全球票房破6亿美元 说中国影迷不感兴趣尚早
- TCL华星13.3英寸定制全隐私屏研发成功!全屏防窥、防窃听
- 今日看点:二次伤害猛于虎 事故后驾驶员留在现场:半小时后被撞身亡
- 全球信息:国产CPU力挺国产OS!x86兆芯加入deepin深度社区
- 焦点速讯:《炉石传说》国服停运倒计时!官方补偿来了:10个卡包你领吗?
- 车门都不给配 新款雪铁龙My ami Buggy官图发布:年满14就能开
- 全球热文:有了AMD RX7900、4090深受市场青睐:RTX 4080还一无是处?
- 比亚迪仰望来了!首发极具颠覆性技术
- 马斯克给全球车主发福利:每人可“白嫖”30天免费EAP试用服务
- 阵容十分豪华 2023最受期待的十大游戏来了:暗黑4位列第三
- 首发天玑8100:荣耀平板V8 Pro带来超级笔记 自动去广告
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
今日要闻!Shell脚本4
(资料图片仅供参考)
一、函数
在编写脚本时,有些脚本可以反复使用,可以调用函数来解决语句块定义成函数约等于别名函数使用方法:
- 定义函数
- 再引用函数
1.function 函数名{ 命令序列}2.函数名(){命令序列}3.function func_name () { ...函数体...}
注意事项:
- 直接写函数中调用函数 直接写函数名
- 同名函数后一个生效
- 调用函数一定要先定义
- 只要先定义了调用的 其他函数定义顺序无关
func_name (){...函数体...}一、定义函数:[root@localhost data]#func1 (){ hostname;date;}1、定义函数[root@localhost data]#func12、调用函数localhost.localdomain2021年 10月 23日 星期六 10:23:50 CST3、注意调用的位置h () {echo "hello"}nihao () {echo `h` `w`}w () {echo "world"}nihao####同名函数
1.1查看函数
[root@localhost ~]# declare -F#函数列表declare -f __HOSTNAMEdeclare -f __SIZEdeclare -f __SLAVEURL[root@localhost ~]# declare -f#函数具体的定义判断操作系统版本:[root@localhost ~]#cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="7"
1.2删除函数
unset func_name #删除函数[root@localhost ~]# diranaconda-ks.cfg pricegame.sh sum.sh 公共 视频 文档 音乐initial-setup-ks.cfg sum1.sh yum.sh 模板 图片 下载 桌面
1.3函数返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值使用原则:
- 函数一结束就去返回值,应为$?变量只返回执行的最后一条命令的退出返回码
- 退出码必须是0-255,超出的值将为除以256取余
#!/bin/bashtest1 () { read -p "请输入一个数字:" num return $[$num*2]}test1echo $?
怎么解决超过 255
#!/bin/bashtest1 () { read -p "请输入一个数字:" num echo $[$num*2]}result=`test1`echo $result
return 的用法:user () {if [ $USER = root ] thenecho "这是管理员用户"elseecho "这不是管理员用户"return 1fi}
1.4函数的传参数
方法一:sum1 (){ sum=$[$1 +$2] echo $sum}read -p "请输入第一个参数:" num1read -p "请输入第一个参数:" num2sum1 $num1 $num2方法二:sum1 () { sum=$[$1 + $2] echo $sum}sum1 10 20
函数变量的作用范围:
- 函数在shell脚本中仅在当前的shell环境中有效
- shell脚本中函数的变量默认全局有效
- 将变量限定在函数内部使用local命令
[root@localhost opt]# vim demo8.sh#!/bin/bashmyfun(){i=8echo $i}myfun[root@localhost opt]# chmod +x demo8.sh [root@localhost opt]# ./demo8.sh 8------------------------------------------------------[root@localhost opt]# vim demo8.sh#!/bin/bashmyfun(){i=8echo $i}myfunecho $i[root@localhost opt]# ./demo8.sh 88--------------------------------------------------------[root@localhost opt]# cat demo8.sh #!/bin/bashmyfun(){i=8echo $i}i=9myfunecho $i[root@localhost opt]# ./demo8.sh 88---------------------------------------------------[root@localhost opt]# cat demo8.sh #!/bin/bashmyfun(){i=8echo $i}myfuni=9echo $i[root@localhost opt]# ./demo8.sh 89
1.5使用函数文件
我们可以新建一个专门存放函数的文件
[root@localhost data]#vim functions ostype (){ if grep -i -q "linux 6" /etc/os-release then echo "centos6" elif grep -i -q "linux 7" /etc/os-release then echo "centos7" elif grep -i -q "linux 8" /etc/os-release then echo "centos8" elsecolor () {RED="echo -e \E[31m"GREEN="echo -e \E[32m"END="\E[0m"引用时[root@localhost data]#. functions [root@localhost data]#ostype centos7-----------------------------------------------------[root@localhost data]#color[root@localhost data]#${GREEN}MMM$END##会变颜色MMM----------------------------------------------------[root@localhost data]#vim os.sh [root@localhost data]#bash os.sh centos7XXXX-------------------------------------------------------
1.6函数的作用范围
[root@localhost ~]#name=qian[root@localhost ~]#func1 () { name=li ; echo $name; }[root@localhost ~]#func1li[root@localhost ~]#echo $name li[root@localhost ~]#name=qian;func1 () { local name=li ;echo $name; };echo $name#加上local变量即可将变量限制在函数内qian
1.7函数递归
函数调用自己本身的函数#阶乘:5!表示为:1* 2 * 3 * 4 * 5
用for循环#!/bin/bashsum=1read -p "请输入一个数字:" numfor i in `seq $num`dolet sum=$[i*sum]doneecho $sum函数调用自己#!/bin/bash#fact() {if [ $1 -eq 0 -o $1 -eq 1 ] thenecho 1elseecho $[$1*$(fact $[$1-1])] fi}fact $1
二、数组
2.1基础
(1)定义数组格式:1. 数组名=(value0 value1 value2 value3 ......)2. 数组名=([0]=value [1]=value1 [2]=value2 ....)3. 列表名="value0 value1 value2 value3 ...... " 数组名=($列表名)4. 数组名[0]="value1" 数组名[1]="value2" 数组名[2]="value3"
(2)数组的包括数据类型:
- 数值型
- 字符型
- 混合型数值加字符
注意:使用" "或" "定义单引号或双引号括起来
[root@localhost ~]# a=(1 2 3 4 5) 0 1 2 3 4 [root@localhost ky15]#declare -adeclare -a a="([0]="1" [1]="2" [2]="3" [3]="4" [4]="5")"[root@localhost ~]# echo ${!a[*]}#查看下标 0 1 2 3 4[root@localhost ~]# echo ${a[0]}#数组的取值 数组加下标1输出第一一个数值 注意是从0开始计算列出所有参数[root@localhost ~]# echo ${a[*]} //*代表所有参数1 2 3 4 5[root@localhost ~]# echo ${a[@]} //@同*1 2 3 4 5共有多少个位置[root@localhost ~]# echo ${#a[@]} //前面加#数组的长度5[root@localhost ~]# echo ${#a[*]} 5#数组分隔[root@localhost ~]# a=(1 2 3 4 5)[root@localhost ky15]#echo ${a[@]:0:5}1 2 3 4 5[root@localhost ky15]#a[1]=9#数组替换[root@localhost ky15]#echo ${a[1]}9[root@localhost ky15]#echo ${a[@]}1 9 3 4 5[root@localhost ky15]#echo ${b[@]/西瓜/葡萄}#只是显示没有真正的修改橘子 香蕉 葡萄[root@localhost ky15]#echo ${b[@]}橘子 香蕉 西瓜[root@localhost ~]#list="1 2 3 4 5"#先定义列表[root@localhost ~]#list1=($list)#再定义数组[root@localhost ~]#echo ${list1[@]}1 2 3 4 5
2.2冒泡排序
1、取出最大数#!/bin/basha=(10 70 30 40 50 60)max=${a[0]}for ((i=0;i<${#a[*]};i++))doif [[ $max -lt ${a[$i+1]} ]]thenmax=${a[$i+1]}fidoneecho $max2、最大数和最小数#!/bin/bashread -p "请输入正整数字,并已空格隔开:" numa=( $num )max=${a[0]}for ((i=0;i<${#a[*]};i++))doif [[ $max -lt ${a[$i+1]} ]]thenmax=${a[$i+1]}fidoneecho "最大值是$max"min=${a[0]}for ((i=0;i<${#a[*]}-1;i++))doif [[ $min -ge ${a[$i+1]} ]]thenmin=${a[$i+1]}fidoneecho "最小值是$min"3、排序算法,冒泡算法a=10b=20对调结果b=10a=20score=(72 63 88 91 45)#第一轮数字大的往后放 第一次 63 72 88 91 45第二次 63 72 88 91 45第三次 63 72 88 91 45第四次 63 72 88 45 91第一轮比较结束 一共比较四次(数组长度减一)最大的数字一定在最后#第二轮数组长度减二 确定了第二大的数字63 72 88 45 9163 72 88 45 91 第一次63 72 88 45 91 第二次63 72 45 88 91 第三次#第三轮数组长度减三 确定了第三大的数63 72 45 88 9163 72 45 88 91 第一次63 45 72 88 91 第二次#第四轮 数组长度减四 确定了第四大的数63 45 72 88 91 45 63 72 88 91 第一次#!/bin/basha=(72 63 88 91 45)#外层为轮次for ((i=1;i<${#a[*]};i++))dofor ((j=0;j<${#a[*]}-i;j++))do if [ ${a[$j]} -gt ${a[`expr $j + 1`]} ] then tmp=${a[`expr $j + 1`]} a[`expr $j + 1`]=${a[$j]} a[$j]=$tmpfidonedoneecho ${a[@]}
2.3调试脚本
set -xread -p "请输入您的分数(0-100):" GRADEif [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]then echo "$GRADE 分!优秀"set +xelif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]thenecho "$GRADE 分,合格"elseecho "$GRADE 分?不合格"fi
今日要闻!Shell脚本4
风暴袭击!美国多个州宣布进入紧急状态 道路能见度可能为零
快资讯:感受彼此体温 杰士邦超薄尊享30只礼盒装19.9元
世界资讯:乘联会喊话:千方百计增加居民收入 大家踊跃买汽车稳消费
【新要闻】【验证码逆向专栏】某验三代滑块验证码逆向分析
短讯!安全多方计算(5):隐私集合求交方案汇总分析
天天观速讯丨论文解读()《Detect Rumors in Microblog Posts for Low-Resource Domains via Adver
每日讯息!GitHub实用开源项目
环球报道:韩国载有216人客机飞行中出现异常:靠一台发动机平安降落
天天热文:特斯拉股价年内大跌60%!最大空头:明年可能会更惨
每日动态!还差14亿刀回本!《阿凡达2》全球票房破6亿美元 说中国影迷不感兴趣尚早
TCL华星13.3英寸定制全隐私屏研发成功!全屏防窥、防窃听
今日看点:二次伤害猛于虎 事故后驾驶员留在现场:半小时后被撞身亡
世界热议:上干货 | 园区智慧物联管理解决方案
Shell脚本3
全球信息:国产CPU力挺国产OS!x86兆芯加入deepin深度社区
焦点速讯:《炉石传说》国服停运倒计时!官方补偿来了:10个卡包你领吗?
车门都不给配 新款雪铁龙My ami Buggy官图发布:年满14就能开
全球热文:有了AMD RX7900、4090深受市场青睐:RTX 4080还一无是处?
比亚迪仰望来了!首发极具颠覆性技术
微头条丨AcWing341. 洛谷P1073, NOIP2009 最优贸易
百事通!面向对象与面向过程
全球速递!Flex布局总结
马斯克给全球车主发福利:每人可“白嫖”30天免费EAP试用服务
阵容十分豪华 2023最受期待的十大游戏来了:暗黑4位列第三
首发天玑8100:荣耀平板V8 Pro带来超级笔记 自动去广告
起点读书宣布百部经典作品限时免费:包括《诛仙》《红楼梦》等
世界热点!男子修车时发现4S店虚报维修定损金额 要求退一赔三胜诉
Codeforces 1630 E Expected Components 题解 (组合数学)
头条:Java基础项目:超市管理项目
每日动态!2023春运车票24日开售 除夕车票要等到1月7日
《妮姬》首月收入突破6.9亿!腾讯海外收入占比提升达12.5%
今日热门!超越电竞机!Redmi K60要榨干第二代骁龙8:画质、帧率、亮度三不降
每日精选:效果堪比镀铬 2.2万元的特斯拉Model Y新配色值不值?
环球观察:高可用 Canal集群 实操( 秒懂 + 史上最全)
微头条丨认证管理(锐捷业软篇)
Intel拆分GPU部门 一把手重回技术岗 累计亏损超20亿美金
天天通讯!iPhone 14 Pro爆出“闪线门” :屏幕出现诡异的绿色和黄色细横线
全球热点评!当ChatGPT遇上弱智吧:全程爆笑
夫妻的世界翻拍哪部电视剧?夫妻的世界最后结局是什么意思?
滕王阁为什么叫阁不叫楼?滕王阁为什么是三大名楼之首?
情非情砸车是第几集?情非情盖总和保姆的结局是什么?
小昭去波斯是哪一集?小昭去波斯后她母亲去哪儿了?
男人是大猪蹄子是什么意思?男人是大猪蹄子女人是什么?
排序算法模板(更新中)
当前速读:机器学习——果蔬分类
每日消息!性能超越电竞手机!Redmi K60 Pro综合跑分达135万
信息:千万别强忍 20岁小伙憋气压抑咳嗽导致昏厥
特斯拉今年股价累计暴跌超60%!马斯克透露大跌原因
收购动视暴雪遇阻 微软哭弱:根本打不过索尼、任天堂
到手9袋!良品铺子坚果礼盒1440 仅44元包邮
每日讯息!教你用JavaScript实现背景图像滑动
户外运动有哪些项目?户外运动品牌排行榜
什么鱼营养价值最高?什么鱼只会逆流而上?
金木水火土命怎么算出来的?金木水火土哪个腿长?
玉面小飞龙是什么意思?玉面小飞龙出自哪里?
Redmi K60系列上架:三颗口碑最好的芯片都拿到了 12月27日发
每日聚焦:最快闪充旗舰!真我GT Neo5充电头曝光:支持240W充电
环球热讯:紫米裁员80%并入小米?官方澄清:ZMI品牌将继续存在
全球新资讯:9.99万元遭疯抢 五菱宏光MINI EV敞篷版下线:能跑280km
苯胺皮是什么皮?苯胺皮和纳帕皮有什么区别?
世界新动态:CloudCanal实战-五分钟搞定Oracle到StarRocks数据迁移与同步
(一)elasticsearch 编译和启动
【速看料】马斯克辞任CEO,产品经理如何用项目协作软件武装自己?
焦点速讯:字节鏖战美团的关键一役
重点聚焦!糗事百科宣布将关闭服务 自侃“享年17岁”
全球观点:神似苹果AirPower!特斯拉推出无线充电板:最高功率15W
手慢无 民族品牌两面针牙膏大促:四支到手20元还送牙刷
又一新能源品牌官宣涨价:最少涨5千 今年买车还剩最后一周“窗口期”
全球速看:盘点适合《战神》奎爷的演员:道恩·强森、杰森·莫玛等
新型复兴号CR200J首次亮相:Wi-Fi全覆盖 充电插口增加
环球微动态丨比亚迪DM-i再外放 东风小康风光蓝电E5官图发布:综合续航1150km
霍乱疫情卷土重来:已致马拉维国410人死亡
环球今热点:随身咖啡馆 精神X小时:Nevercoffee咖啡1.99元(京东5元)
天天微头条丨什么是 HTML5?
每日消息!Ubuntu:Docker 容器操作
天天关注:苹果降低中国工厂依赖:真要搬走?iPhone 14制造难度降低
全球聚焦:不装了!日本万亿重新发展核能:新一代核反应堆准备中
【热闻】冬至湖南浏阳全城燃放烟花 满城烟花一河诗画:网友羡慕哭
焦点简讯:顺丰又上热搜!买Chanel耳钉顺丰运掉五颗珍珠
焦点热门:修复RX 7900显卡功耗异常 AMD新驱动实测:有用 但没什么大用
天天简讯:比iPhone 14 Pro Max更轻更便宜 OPPO Find N2首销:7999元
4插槽怪兽 华硕、猫头鹰合作打造最安静、最冷静的RTX 4090/4080显卡
动态:5.2万亿财富没了 特斯拉股东喊话马斯克:别只顾着推特了
世界微速讯:小岛秀夫:只有Xbox懂我
天天通讯!本田思域Type R各国/地区售价曝光 在日本才卖20多万?
每日短讯:负债585.68亿:国美获黄光裕公司三笔贷款累计5亿港元
全球快看点丨新能源车国补退场倒计时!车企打响价格战:现金立减、保险补贴
时隔半年 终于不寂寞!讯景发布全球第二款RX 6700
中国哪里的羊肉最好吃?这5个地方 你最爱谁?
后壳质感堪比玉石!vivo S16 Pro图赏
微软重构资源管理器进程:Windows 11运行速度大提升
支付宝接入技术
Python requests库指定IP请求,并使用HTTPS证书验证
世界今热点:MAUI新生4.5-字体图像集成Font&Image
精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
美国遭史上最严重禽流感疫情:鸡蛋价格创纪录 真吃不起节奏
环球速看:FreeSWITCH学习笔记:Lua脚本
每日短讯:剪映上线团队剪辑“神技”:异地多端一起剪视频成为可能
3299元起 vivo S16 Pro手机发布:首发双面柔光人像拍摄