在写shell脚本时,常常会用到循环语句。这里简单总结下常用的3种循环语句,以便以后能快速地参考写出,废话不说,开始
一、for 循环语句
1、语法结构
(1)列表循环
(2)不带列表循环
(3)类C风格的for循环
格式:
for 变量名 in 取值列表
do
命令序列
done
for ( (expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出
demo:
1、for
主要用于:在以知序列里遍历元素
#! /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的用法示例:
#! /bin/sh -
for i in `seq 1 9` do echo $i done注意:for in 可以和 `` 与 $() 合用
再给一个for的用法示例:
#! /bin/sh -
for i in {a……z} do echo $i done
打印0到50的偶数
#!/bin/bash
for i in {0..50..2] #..2代表步长为2,每隔2个
do
echo $i
done
1到10的偶数和
#/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
#!/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
批量创建用户 方法一:
#!/bin/bash
for i in {1..5}或`seq 5`
do
useradd cl$i
echo "123456" | passwd --stdin cl$i
done
方法二:
先创建一个名单为users.txt在home目录下
#!/bin/bash
UL=$(cat /home/users.txt)
for UNAME in $UL
do
useradd $UNAME
echo "123456" | passwd --stdin $UNAME &>/dev/null
done
批量删除用户
#!/bin/bash
UL=$(cat /home/users.txt)
for UNAME in $UL
do
userdel -r $UNAME &>/ dev/ null
done
注意:for in 的大括号{}具有自动补齐功能,大括号与要补齐的内容之间不能有空格,要补齐的内容首尾由两个……相连,其间不能有空格再给个for的用法示例:
#! /bin/sh -
for (( i=1; i<=10; i++ ))
do echo $i done提醒:这个主要是用了(())
2、while
主要用于:当某条件成立时,一直执行
#! /bin/sh -
cnt=9
while [ $cnt -ge 0 ] do echo $((cnt——))
done
注意:1、算术运算,需要放在$(()) 的括号中
2、对于变量的算术运算,在$(())中,变量前面不需要$
3、unitl
主要用于:当某条件成立时,停止执行
#! /bin/sh -
cnt=9 until [ $cnt -lt 0 ] do echo $cnt cnt=$((cnt - 1))
done
注意:给变量赋值时,前面不要加$
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。