前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell 循环语句用法小结

Shell 循环语句用法小结

原创
作者头像
IT工作者
修改2022-07-02 10:46:43
7930
修改2022-07-02 10:46:43
举报
文章被收录于专栏:程序技术知识

在写shell脚本时,常常会用到循环语句。这里简单总结下常用的3种循环语句,以便以后能快速地参考写出,废话不说,开始

一、for 循环语句

1、语法结构

(1)列表循环

(2)不带列表循环

(3)类C风格的for循环

格式:

代码语言:shell
复制
for  变量名  in  取值列表
do
    命令序列
done

代码语言:shell
复制
for ( (expr1;expr2;expr3))
do
command
done

expr1:定义变量并赋初值

expr2:决定是否循环

expr3:决定循环变量如何改变,决定循环什么时候退出

demo:

1、for

主要用于:在以知序列里遍历元素

代码语言:javascript
复制
#! /bin/sh -
if [ $# -ge 1 ]; then path=$@ else path=*.sh fi
for i in $path do ls -lh $i done
//注意:for循环的in列表时可选的,如果省略,shell会遍历整个命令行参数,此时 for i 相当于 for i in "$@"

再给一个for的用法示例:

代码语言:javascript
复制
 #! /bin/sh -
for i in `seq 1 9` do echo $i done注意:for in 可以和 `` 与 $() 合用

再给一个for的用法示例:

代码语言:javascript
复制
#! /bin/sh -
for i in {a……z} do echo $i done

打印0到50的偶数

代码语言:javascript
复制
#!/bin/bash
for i in {0..50..2]   #..2代表步长为2,每隔2个
do
echo $i
done

1到10的偶数和

代码语言:javascript
复制
#/bin/bash
sum=0
for i in {0..10..2}
do
  sum=$[sum+i]
  let i++
done
echo "10以内的偶数和为:$sum"

小知识点:

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 s (seq 0 2 10) 1-10的偶数,中间为步长

循环输出1到5

代码语言:javascript
复制
#!/bin/bash
for  ((i=1;i<=5;i++) )do
echo $i
done

注: 
i++ :  i=1+1  先赋值再运算  i=1  之后再 +1
++i :  1+1=i  先运算再赋值  1+1  之后再 =i

批量创建用户 方法一:

代码语言:javascript
复制
#!/bin/bash
for i in {1..5}或`seq 5`
do
useradd cl$i
echo "123456" | passwd --stdin cl$i
done

方法二:

先创建一个名单为users.txt在home目录下

代码语言:javascript
复制
#!/bin/bash
UL=$(cat /home/users.txt)
for UNAME in $UL
do
useradd  $UNAME
echo "123456" | passwd --stdin $UNAME &>/dev/null
done

批量删除用户

代码语言:javascript
复制
#!/bin/bash
UL=$(cat /home/users.txt)
for UNAME in $UL
do
userdel -r $UNAME &>/ dev/ null
done

注意:for in 的大括号{}具有自动补齐功能,大括号与要补齐的内容之间不能有空格,要补齐的内容首尾由两个……相连,其间不能有空格再给个for的用法示例:

代码语言:javascript
复制
 #! /bin/sh -
for (( i=1; i<=10; i++ ))
do echo $i done提醒:这个主要是用了(())

2、while

主要用于:当某条件成立时,一直执行

代码语言:javascript
复制
 #! /bin/sh -
cnt=9
while [ $cnt -ge 0 ] do echo $((cnt——))
done

注意:1、算术运算,需要放在$(()) 的括号中

2、对于变量的算术运算,在$(())中,变量前面不需要$

3、unitl

主要用于:当某条件成立时,停止执行

代码语言:javascript
复制
#! /bin/sh -
cnt=9 until [ $cnt -lt 0 ] do echo $cnt cnt=$((cnt - 1))
done

注意:给变量赋值时,前面不要加$

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档