文章目录
for
shell中for循环的使用主要分为三类:数字性循环、字符性循环、路径查找
数字性循环
预备知识:关于shell中(( ))的用法
语法:
((表达式1,表达式2…))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b–等。
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while,if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
- 第一种,类似于C中for循环
#!/bin/bash
for((i=1;i<=10;i++))
do
echo $(expr $i \* 3 + 1) ## $()类似于``,变量替换,先执行;
done
注意:expr简单计算器,各个字符之间需要空格隔开,乘法这里面的*转义一下
- 第二种,与seq相关
#!/bin/bash
for i in $(seq 1 2 10) ##seq 三个参数用空格隔开,分别表示起始数字,步长,终止数字
do
echo $(expr $i + 2 \* 2 )
done
- 第三种,{1…10}
#!/bin/bash
for i in {1..10}
do
echo $(expr $i + 1)
done
- 第四种,awk中的for循环
#!/bin/bash
awk 'BEGIN{for(i=1;i<10;i++) print i}' ##这里有awk自己的语法规则
字符性循环
- 第一种
#!/bin/bash
for i in $(ls)
do
echo $i is filename
done
- 第二种,使用$*,循环输出脚本后的字符串。
#!/bin/bash
for i in $*
do
echo $i is your input str!
done
- 第三种,指定字符串
#!/bin/bash
for i in f1 f2 f3
do
echo $i your appoint!
done
- 第四种,以变量的方式指定字符串
#!/bin/bash
list_file="f1 f2 f3"
for i in $list_file
do
echo $i your appoint!
done
路径查找
- 第一种,for循环查找目录下的所有文件
#!/bin/bash
for i in /mnt/*
do
echo $i is file in dic
done
- 第二种,匹配对应文件类型进行for循环
#!/bin/bash
for i in $(ls *.sh)
do
echo $i is a script!
done
解决实际问题
- Q:教室里的前十台主机,哪一个ip是通的,把ip显示出来。
- A:
while
基础语法:
while ture
do
程序实体
done
while示例:
- 利用while循环计算1到100的和
注意:let与(()) 在shell编程中是可以互换的,它们让我们可以像C语言那样写程序对于变量运算赋值。
1、使用(())时,运算符两边需要有空格;
2、(())算数表达式的值在if和while判断时不用在前面加“$”;在echo输出值时需要加"$"
#!/bin/bash
i=1
sum=0
while test $i -le 100
do
let sum=sum+$i
((i++))
done
echo $sum
while实际问题
- Q:5s做一次系统的负载监控,显示在屏幕上
- A:
if
语法:
if 判断条件
then
statement1
statement2
.....
elif 判断条件
then
statement3
else
statement4
fi
示例:
- Q:写一个脚本,用文件读取的方式创建用户。
- A:
测试:
case
语法:
case $word in
word1)
action1
;;
word2)
action2
;;
*)
action_last
esac
示例:
exit,break,continue
区别 | 含义 |
---|---|
continue | 退出本次循环,下次的循环还会执行 |
break | 退出循环,但循环后面的函数体还会执行 |
exit | 直接就退出了 |
示例
continue
效果:
break
效果: