r语言列表添加元素的方法是什么
271
2022-11-04
shell循环语句
循环语句的作用
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
一,for循环
1、语法结构
(1)列表循环(2)不带列表循环(3)类C风格的for循环
遍历for 变量名 in {list}do commanddonefor i in {a..c}do echo $idonefor i in {1..5} //{}里面不识别变量do echo $idonefor i in `seq 5` //seq 5=1、2、3、4、5序列do echo $idonea=10for i in `seq $a` //seq可以引用变量do echo $idonefor 变量名 in a b cdo commanddonefor i in a b c //i这里实际没有调用,所以就相当于in后面几个参数就循环几次do echo 123donefor i in a b c //这里调用到i变量了,所以就正常显示i的值(a\b\c)do echo $idone
2.技巧
for i in {1..50..2} 1-50的奇数for i in {2..50..2} 1-50的偶数for i in {10..1} 1-10倒序排列for i in $(seq 10) 1-10正序排列for i in $(seq 10 -1 1) 1-10倒序排列for i in $(seq 1 2 10) 1-10的奇数,中间为步长for i in $(seq 0 2 10) 1-10的偶数,中间为步长例子:for i in $(seq 0 2 10);do echo $i ;done
3,示例
1.打印1-5这5个数字vim for.sh#!/bin/bashfor i in {1..5} do echo $i done 2.打印5次hello world注意:虽然我们定义了一个变量i,但是没有使用它,它只是控制循环次数vim for.sh#!/bin/bashfor i in {1..5} do echo hello world done3.输出0-50之间的偶数vim for1.sh#!/bin/bashfor i in {0..50..2} //..2代表步长为2,每隔2个do echo $idone
4.类C风格的for循环for ((expr1;expr2;expr3))do
command
doneexpr1:定义变量并赋初值expr2:决定是否循环expr3:决定循环变量如何改变,决定循环什么时候退出
1.打印1-5迭代vim for.sh#!/bin/bashfor ((i=1;i<=5;i++))do echo $idone2.打印1-10的奇数[root@server ~]# vim for3.sh#!/bin/bashfor ((i=1;i<=10;i+=2)) //i=i+2do echo $idone3.脚本批量添加用户=====#!/bin/bashULIST=$(cat /root/users.txt) for UNAME in $ULISTdouseradd $UNAMEecho "123456" | passwd --stdin $UNAME &>/dev/null done
注:i
++ : i=1+1 先赋值再运算 i=1 之后 再 +1
++i : 1+1=i 先运算再赋值 1+1 之后 再=i
二,while循环
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
1.语法结构:
while 表达式do
command
done
1.打印1-5vim while.sh#!/bin/bashi=1while [ $i -le 5 ]do echo $i let i++ //注意这里如果不改变$i的值,会变成死循环# i=$[$i+1] //两种写法doneecho "最后i的值为: $i"2.输出1-100之间不能被3整除的数字vim 3.sh #!/bin/bashi=1while [ $i -le 100 ] do if [[ $i%3 -ne 0 ]] then echo "$i" fi let i++done
2.while死循环
while [ 1 -eq 1 ] //写一个永远为真的表达式,1等于1这个条件永远为真,所以这个脚本会一直循环下去do
command
donewhile truedo
command
donewhile :do
command
done
猜数字,猜不对就一直猜num=10while truedoread -p "请输入数字:" shuif [ $shu -eq $num ];then echo "你猜对了" breakelif [ $shu -gt $num ];then echo "你猜大了"elif [ $shu -lt $num ];then echo "你猜小了"fidone
三,until循环
1.跟while相反,条件为假进入循环,条件为真退出循环
语法结构until 表达式do
command
done
2.死循环结构
until falsedo
command
doneuntil [ 1 -ne 1 ]do
command
done
四,循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个1、continue继续,但不会执行循环体内下面的代码了,开始重新开始下一次循环例1:打印1-5的数字,3不打印vim for4.sh#!/bin/bashfor ((i=1;i<=5;i++))do if [ $i -eq 3 ];then continue else echo $i fidone结果是1245,3不输出,因为跳出后面的echo语句执行下一次循环了2、break打断,马上停止本次循环,执行循环体外的代码例2:1-10的数字,7后面的都不打印vim for4.sh#!/bin/bashfor ((i=1;i<=10;i++))do if [ $i -eq 8 ];then break else echo $i fidone3、exit直接跳出程序,后面可跟状态返回码如exit 1等等for i in {1..5}doif [ $i -eq 3 ];then exit 100 else echo $ifidoneecho hi直接跳出程序所以不会执行最后的echo hi,并且返回码是100通过$?查看
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~