Shell编程及循环语句与函数

for循环

for语句的结构

读取不同的变量值

1)for 变量  in  取值列表
for i in  $(seq 1 10)
do
    命令序列
    ....
done

也可以用seq 来写取值列表

遍历文件内容

2)for ((变量=初始值; 变量范围; 变量的迭代方式))
for ((i=1; i<=10; i++))
do
    命令序列
    ....
done

实例操作

创建用户

通过/etc/passwd文件查看 创建成功

批量修改用户密码

for遍历循环脚本实例

1)for 变量  in  取值列表


for i in  $(seq 1 10)
do
    命令序列
    ....
done

批量添加用户

检查主机状态

2)for ((变量=初始值; 变量范围; 变量的迭代方式))


for ((i=1; i<=10; i++))
do
    命令序列
    ....
done

求字符串分片

 ${变量:下标:长度}     #下标从0开始


求字符串长度

 ${#变量}

求随机数  

   $RANDOM         #0~32767

求0到N-1之间的随机数    $[RANDOM % N] 

自动生成8位数随机密码案例

for循环实现多线程


for ((i=1; i<=10; i++))
do
  {
    命令序列
     ....
  }&          #将每次循环的进程都放入后台自行运行
done
wait          #等待上面所有循环的进程都执行完毕后再执行后面的命令
命令序列

IFS  for循环取值列表分隔符 


set | grep IFS  -->  IFS=$' \t\n'    默认包含 空格、制表符、换行符

系统变量不要随便修改

while循环

//while 循环
while [ 条件表达式 ]       while test 条件表达式        while 命令行 &> /dev/null      #条件成立时才会循环执行do里面的命令序列
do
    命令序列
    ....
    变量的迭代方式
done

a=1
while [ $a -le 10 ]
do
  echo $a
  let a++
done 

while语句应用实例

a小于等于20前条件一直会成立 一直会循环

必须得加一个迭代a++

不然会一直重复循环1 <= 20

while配合sleep实现更小的脚本运行

echo 这边简单说一下

#从文件读取行内容循环


cat 文件 | while read 变量
do
    命令序列
    ....
done

while read 变量
do
    命令序列
    ....
done < 文件
 

until循环

//until 循环
until [ 条件表达式 ]       until test 条件表达式        until 命令行 &> /dev/null      #条件不成立时才会循环执行do里面的命令序列
do
    命令序列
    ....
    变量的迭代方式
done

a=1
until [ $a -ge 10 ]
do
  echo $a
  let a++
done 

循环退出


exit     退出脚本进程      exit N    还可以指定脚本退出的状态返回码

break    跳出单个循环      break 2   跳出2层循环

continue  中止本次循环中的其它命令执行,但不会完全中止整个循环运行

for双重循环

for ((a=1; a<=6; a++))
do
    echo $a
    for ((b=1; b<=6; b++))
    do
        echo $b
        if [ $b -eq 3 ];then
            break
        fi
    
    done
done

for双重循环实例

99乘法表

正直角三角形

倒直角三角形

等腰直角三角形

菱形

删除变量值内容

A='11:22:33:44'
echo ${A%:*}  -->  11:22:33        #从最右边开始删内容,直到最近的一个 : 的位置
echo ${A%%:*} -->  11              #从最右边开始删内容,直到最远的一个 : 的位置
echo ${A#*:}  -->  22:33:44        #从最左边开始删内容,直到最近的一个 : 的位置
echo ${A##*:}  --> 44              #从最左边开始删内容,直到最远的一个 : 的位置
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值