14.3、bash脚本编程
1、bash脚本编程语句控制: 顺序执行 选择执行 循环执行 for、while、until
2、循环控制语句 循环控制语句用在循环体中,用于控制循环执行行为的 有两种控制循环执行行为的语句:continue、break continue语句:提前结束本轮循环,而直接进入下一轮玄幻判断(一般用在语句中间) break语句:提前跳出循环,可以用在循环执行语句的任何位置。 格式:以while循环为例
创建死循环:while示例 while true ;do 循环体 done 注意:死循环退出方式,某个测试条件满足时,让死循环执行break命令 示例:求100以内所有偶数的和:(conutine示例)
bash -n 脚本名 :检查是否有语法错误 bash -x 脚本名 :显示脚本执行过程 示例:求100以内正整奇数之和,用死循环来实现 [root@localhost sh]# cat while_sum_js_dead.sh #!/bin/bash declare i i=1 declare i sum=0 while true ;do let sum+=$i let i+=2 if [ $i -gt 100 ];then break fi done echo "sum:$sum" [root@localhost sh]# [root@localhost sh]# bash while_sum_js_dead.sh sum:2500 3、sleep命令:延迟指定时长 格式:#sleep NUMBER //NUMBER为数字,单位为秒 如:#sleep 3 sleep命令用在脚本中示例: 练习:每隔3秒钟到系统上获取已经登录用户的用户信息,其中,如果logstash用户用户登录了系统,则记录与脚本中,并退出
4、while循环的特殊用法:遍历文件的每一行 格式: while read VARIABLE;do //read为关键字,VARIABLE为变量 循环体 done < /PATH/FROM/SOMEFILE 实现的功能:一次读取/PATH/FROM/SOMEFILE文件中的每一行,且将其赋值给VARIABLE变量。 示例:找出ID为偶数的用户,显示其用户名、ID、及默认shell [root@localhost sh]# cat while_read.sh #!/bin/bash while read var_line;do userid=$(echo "${var_line} "| cut -d: -f3) username=$(echo "${var_line} "| cut -d: -f1) usershell=$(echo "${var_line}" |cut -d: -f7) if [ $[$userid%2] -eq 0 ];then echo "$username,$userid,$usershell" fi done </etc/passwd [root@localhost sh]# 5、for循环的特殊用法: 格式: for ((控制变量初始化;条件判断表达式;控制变量的修正表达式));do //注意,要写两个括号(( )) 循环体 done 实现的功能:while的三个语句用一个for语句实现 执行的次序: 控制变量初始化:仅在循环代码开始执行时,运行一次 控制变量的修正表达式:每轮循环结束会先进行控制变量修正表达式运算,而后在做条件判断 条件判断:> < = <= >=,直接写条件比较 示例:求100以内的正整数之和 [root@localhost sh]# cat for_sum_100.sh #!/bin/bash declare -i sum=0 for (( i=1;i<=100;i++));do let sum+=$i done echo "sum:$sum" [root@localhost sh]# [root@localhost sh]# bash for_sum_100.sh sum:5050 [root@localhost sh]# 示例:打印九九乘法表 [root@localhost sh]# cat for_99.2.sh #!/bin/bash for ((i=1;i<=9;i++));do for ((j=1;j<=i;j++));do echo -e -n "${i}*${j}=$[${i}*${j}]t" done echo " " done [root@localhost sh]# [root@localhost sh]# bash for_99.2.sh 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |