###################################################
shell 脚本编程
一、循环结构
让特定代码重复执行
1.for循环
1)特点:循环的次数是固定的!
2)语法结构及特点
for 变量 in 值1 值2 …
do
命令
done
for ((i=1;i<10;i++)) /另一种写法
do
命令
done
###########################
seq 1 5 = seq 5 = echo {1..5} 默认起始位置为1
seq 1 2 5 --输出1 3 5 ,中间的2为步长
###########################
3)应用
# 输出3个chenguiz / 或 `seq 3` 或 {1..3}
for i in 1 2 3
do
echo "chenguiz"
done
###########################
# 快速创建1000个文件
for i in {1..1000}
do
touch /tmp/$i .txt
done
###########################
#读取用户文件,自动创建用户,初始密码为123456
for i in $(cat /root/user.txt)
do
id $i &>/dev/null
if [ $? -ne 0 ];then
useradd $i
echo "123456" | passwd --stdin $i &>/dev/null
echo "$i 用户创建成功!"
else
echo "$i 用户已存在" >> /root/user.log
fi
done
###########################
#拼网段,分开导出以便查看
for i in {113..119}
do
ping -c 2 172.40.55.$i &>/dev/null
if [ $? -eq 0 ];then
echo "172.40.55.$i is up !" >>/root/up.log
else
echo "172.40.55.$i is down !" >>/root/down.log
fi
done
###########################
猴子摘了若干香蕉,吃了一半,多吃了一个。第二天吃了一半,又多吃了一个,以此类推,第九天,剩一个。
2.while循环
1)特点:不定次数,当判断为真时,一直循环执行;判断为假,则循环结束。
四循环的缺点:超耗内存,需sleep 0.1
2)结构
while [ 判断 ]
do
命令
done
while : /死循环固定格式 加冒号
do
命令
done
###########################
3)应用
#循环10次
i=1
while [ $i -le 10 ]
do
echo "你好!"
i=$[i+1] 或let i++ /循环10次
done
###########################
#无限猜
num=$[RANDOM%100+1] /随机数取100的余数(0-99)加1 (1-100)
i=0 /先定义次数的变量
while :
do
read -p "有个随机数,你来猜猜看:" cai
let i++ /每猜一次加一
if [ $cai -eq $num ];then
echo "恭喜你,猜对了!共猜了$i 次。"
exit /猜对并退出
elif [ $cai -gt $num ];then
echo "猜大了"
else
echo "猜小了"
fi
done
###########################
打印一个9*9乘法表
难点:不换行 echo -n “2*1=2” ;echo -n “2*2=4”
for i in `seq 9` for j in `seq 9`
echo “$i*$j=$[i*j]”
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i` /$i让j永远小于等于i
do
echo -n "$i*$j=$[i*j] " /引号最后留个空格以隔开
done
echo /里面执行完后换行
done
###########################
二、服务脚本设计
1.case分支结构