本章结构
- 循环语句
for循环语句
while循环语句
until循环语句 - Shell函数
- Shell数组
for语句的结构
- 读取不同的变量值,用来逐个执行同一组命令
格式1:
for 变量 in 取值列表
do
命令序列
done
格式2:
for 收件人 in 邮件地址列表
do
发送邮件
done
for 变量名
do
done
for ((i=3;i<3;i++))
do
done
例如:
#!/bin/bash
for i in {1..5}
do
echo $1
done
seq 序列
#!/bin/bash
for i in 'seq 5'
do
echo hello
done
#!/bin/bash
a=10
for i in {1..$a}
do
echo hello
done {} 中无变量
#!/bin/bash
for i in 'seq $a'
do
echo hello
done
[root@localhost~]# bash 5.sh hello
hello 当后面跟未知变量时,hello便赋值给列表中 变量i
for ((i=1;i<3;i++)) i=1 xxx
do
echo xxx
done
i=1 xxx
i=2 xxx 输入——判断——增加——判断
- 例:
输出*****
示例1、
#!/bin/bash
read -p "请输出星星的规格:" p
for ((j=1;j<$p;j++))
do
for((i=1;i<$p;i++))
do
echo -n "*"
done
echo
done
示例2:
#!/bin/bash
for j in {1..5}
do
for i in {1..5}
do
echo -n "*"
done
echo
done
示例2;创建一个用户
#/bin/bash
#这是一个创建指定用户的脚本
for name in `cat /opt/user.text`
do
id $name &> /dev/null
if [ $? -eq 0 ];then
echo "用户已存在"
else
echo "正在创建用户$name用户"
useradd $name
echo "正在设定$name的密码"
echo "123" | passwd --stdin $name &> /dev/null
fi
done
while语句的结构
- 重复测试某个条件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
done
while 为猜中正确价格
do
反复猜测商品价格
done
#!/bin/bash
while ping -c 2 www.baidu.com &> /dev/null
do
echo hello
done
#!/bin/bash
while true
do
echo hello
done 死循环
#!/bin/bash
while :
do
echo hello
done 死循环
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
let i++
done
示例1:猜大小
!/bin/bashn=30
while true
do
read -p"请输入一个数字: " num
if [ $num -eq $n ];then
echo “你猜对了”
break\continue\exit 退出当前死循环
elif [ $num -gt $n ];then
echo "你猜大了"
elif [ $num -lt $n ];then
echo “你猜小了”
fi
done
示例2:
!/bin/bashi=1
while [ $i -le 10 ]
do
echo $i
f [ $i -ge 5 ];then
continue 是以当前变量值继续,不执行下面的操作
fi
let i++
done
示例3: 添加一个返回码,命令退出当前脚本
# !/bin/bashi=1
while [ $i -le 10 ]do
echo si
if [ $i -ge 5 ];then
exit 22 自定义返回码
fi
let i++
done
echo xxx
示例4:
#/bin/bash
#这是一个求0-100偶数和的脚本
a=0
b=1
while [ $b -le 100 ]
do
if [[ $b%2 -eq 0 ]];then
let a=$a+$b
fi
let b++
done
echo $a
until语句结构(重复测试某个条件,只要条件不成立则反复执行)
#!/bin/bash
until false
do
echo 11
done
#!/bin/bash
i=1
sum=0
until [ $i -gt 100 ]
do
let sum=$i+$sum
let i++
done
echo $sum
Shell 函数
- 将命令序列按格式写在一起
- 可方便重复使用命令序列
- shell函数定义
[ function ] 函数名(){
命令序列
[return x]
}
使用return或exit可以显式地结束函数
- 调用函数的方法
函数名 [参数1] [参数2]
例:
示例:
#!/bin/bash
function hello (){
echo hello
}
hello 此处的为调用
示例:
#!/bin/bash
hello(){
echo hello
}
world(){
echo world
}
nihao(){
echo 'hello' 'world'
nihao
SUM(){
let sum=$1+$2
echo $sum
}
SUM $1 $2