本文共 1938 字,大约阅读时间需要 6 分钟。
Shell脚本(三)
一•for循环语句:(循环次数未知)
for 变量名取值列表
do命令序列done(1) 根据姓名列表批量添加用户
vim /root/user.txt zhangsanwangwuxiaobaivim /root/uadd.sh#!/bin/bashULIST=$(cat /root/user.txt)for uname in $ULISTdouseradd $unameecho "123456" | passwd --stdin $uname&>/dev/nulldonesh /root/uadd.shcat /etc/passwd① 制定员工列表文件
② 编写脚本(for循环语句格式)
③ 执行脚本
(2) 根据IP地址检查主机状态
vim /root/ipadds.txt192.168.1.1192.168.1.2192.168.10.1vim chkhosts.sh#!/bin/bashHLIST=$(cat /root/ipadds.txt)for IP in $HLISTdoping -c 3 -i 0.2 -W 3 $IP &>/dev/nullif [ $? -eq 0 ]then echo "host $IP is up"else echo "host $IP is down"fidonechmod +x chkhosts.shsh chkhosts.sh① 制定IP地址列表
② 编写脚本(for循环语句格式)
③ 执行脚本
二•while循环语句:(循环次数已知)
while 条件测试
do 命令序列done(1) 批量添加有规律编号的用户:
① 使用I控制用户名称的编号② 在循环内部通过let ++ (等同于 i= ‘expr $i + 1’ )来使i增加,以此类推。(2) 猜价格游戏:
vim /pricegame.sh#!/bin/bashprice=$(expr $RANDOM % 1000 )times=0echo "price between 0 and 999 pelease input it "while truedoread -p "input price:" intlet times++if [ $price -eq $int ] ; thenecho "yes,you are right." echo "you have anwser $times time"exit 0elif [ $int -gt $price ] ; thenecho "price is too high"elseecho "price is too low"fidonechmod +x /pricegame.sh./pricegame.sh① 通过环境变量RANDOM可获得一个小于2的十六次方的随机整数,计算其与1000的余数可以获得0~999的随机价格
② 反复测试操作可以通过一ture作为测试条件的while循环实现③ 当用户猜中事中止操作④ 使用变量来几率操作次数三•case分支语句:
case 变量值 in
模式1)命令序列1;;模式2)命令序列2;;……*)默认命令序列esac(1) 击键类型识别(case 分支语句格式):
(2) 编写系统服务脚本(case 分支语句格式):
vim /myprogs
case "$1" instart)echo -n "zhengzai qi dong $sleep fuwu"if sleep 7200 &thenecho "OK"fi;;stop)echo -n "zheng guan bi dong sleep fuwu"pkill "sleep" &/dev/nullecho "OK";;status)if pgrep "sleep" &>dev/nullthenecho "fuwuyikaiqi"elseecho "fuwuyitongzhi"fi;;restart)$0 stop$0 start;;*)echo "tongaf: $0 {start|stop|restart|status}"esacchmod +x /myprogs./myprogs start./myprogs status./myprogs stop转载于:https://blog.51cto.com/13468179/2163600