shell编程之循环语句与函数
for循环语句好处
-
循环是一种控制流程的结构,用于重复执行一段代码
-
遍历是一种数据操作的过程,用于访问并处理数据结构中的每个元素
在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作 -
循环(Loop) 是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写,提高代码的重复利用率,以及提高程序的效率
-
以下是使用循环的一些好处:
- 重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写
- 减少程序代码量,提高程序的可读性和可维护性
- 简化程序逻辑:使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性,降低代码出错的可能性
- 提高代码的重复利用率:通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余
- 提高程序的效率:循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能。
for循环语句格式
##读取不同的变量值,用来逐个执行同一组命令
for 变量名称 in 列表范围
do
命令序列
done
##列表范围全部遍历结束,循环才结束
## 格式一
for i in {1..5}
do
echo "$i"
done
## 类 c语言格式
for ((i=0;i<=5;i++))
do
echo "$i"
done
## 死循环
for ((;;))
批量添加用户
- 批量添加用户
- 设置密码
- 创建用户文件
vim user.txt
zhangsan
lisi
wangwu
#!/bin/bash
for i in $(cat /opt/user.txt) ##使用绝对路径
do
useradd $i
echo "123" | passwd --stdin $i
done
根据IP地址检查主机状态
- ping通的IP地址放到 /opt/hosts 文件中
- IP放在 ipadds.txt 文件中
- 使用 ping 命令 检测
ping -c 3 -W 2
#!/bin/bash
for i in $(cat ipadds.txt)
do
ping -c 3 -W 2 $i &> /dev/null
if [ $? -eq 0 ]
then
echo $i >> /opt/hosts
else
echo "$i下线了"
fi
done
数字累加
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$(($i+$sum))
done
echo $sum
常用转义字符
echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上 echo -ne
只有加了-e才能执行下面的转义符:
常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
\n 换行,被输出的字符从"\n"处开始另起一行。
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v 与\f相同;
\t 转以后表示插入tab,即横向制表符;
\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
\\ 表示插入"\"本身;
九九乘法表输出
#!/bin/bash
for i in {1..9}
do
for ((j=1;j<=i;j++))
do
echo -ne "$i*$j=$(($i*$j))\t"
done
echo
done
循环控制语句
continue跳出循环
for i in {1..5}
do
if [ $i -eq 3 ]
then
continue
fi
echo "$i"
done
控制双重循环语句
for j in {1..5}
do
for i in {1..5}
do
if [ $i -eq 3 ]
then
continue 3 ###这个数字是循环的层数,就是for的次数
fi
echo "$i"
done
done