脚本编程控制结构

    顺序

    选择    

        if

        case

    循环

        for

        while

        until

while格式:

while CONDITION;do

    statment

done

进入循环:条件满足

退出循环:条件不满足

until 格式:

    until CONDITION;do

        statment

    done

进入循环:条件不满足

退出循环:条件满足

#!/bin/bash#read -p "Input Something:" STRINGuntil [ $STRING == 'quit' ]; do      echo $STRING | tr 'a-z' 'A-Z' read -p "Input Something:" STRINGdone
#!/bin/bash#until who | grep "root" &> /dev/null ;do   echo " root not login."   sleep 5done   echo "root is login."

for的结构:

 1、

   for 变量 in ;do

    循环体

   done

2、

for ((expr1;expr2;expr3));do

    循环体

done

#!/bin/bash#declare SUM=0for I in {1..100};do  let SUM+=$Idoneecho $SUMdeclare SUM2=0for ((J=1;J<=100;J++));do   let SUM2+=$Jdoneecho $SUM2

使用for语句的两种格式,计算1到100之间的算数

#!/bin/bash#for2.shdeclare SUM=0for ((I=2;I<=100;I+=2));do   let SUM+=$Idoneecho $SUM

计算100以内偶数的和

awk 'pattern{action}' file

   print $1

   $NF:最后一个字段

   -F: 指定分隔符为:

fdisk -l 2>/dev/null | grep "^Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}'

找出服务器上的所有硬盘

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:

1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;

2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,n就退出;否则,让用户重新选择;

3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;(提示:将分区命令通过echo传送给fdisk即可实现)

#!/bin/bash#echo -e "\033[31mInitial a disk ...\033[0m"echo -e "\033[31mWARNING....\033[0m"echo "You have the following disk"fdisk -l | grep "^Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}' | awk   '{print $2}'read -p "Enter your choice:" CHOICEif [ $CHOICE == 'quit' ];then   echo "Quting...."   exit 0fiuntil fdisk -l | grep "^Disk /dev/[sh]d[a-z]" | grep "^Disk $CHOICE"  &> /dev/null;do    read -p "wrong option,Enter your choice aging:" CHOICEdoneread -p "Will destory all format data,continue? Y/N:" CHOICE2until [ $CHOICE2 == 'Y' -o $CHOICE2 == 'N' ];do    read -p "Will destory all format data,continue? Y/N:" CHOICE2doneif [ $CHOICE2 == 'N' ];then   echo "Quiting...."   exit 7elsedd if=/dev/zero of=$CHOICE bs=512 count=1 &> /dev/nullsyncsleep 3echo 'np1+20Mnp2+150Mnp3+128Mt382w' | fdisk $CHOICE &> /dev/nullsleep 1syncmke2fs -j ${CHOICE}1 &> /dev/nullsleep 2mke2fs -j ${CHOICE}2 &> /dev/nullsleep 2mkswap ${CHOICE}3 &> /dev/nullfi

将挂载的/dev/sde设备umount脚本:

#!/bin/bash#umount.shfor I in `mount | grep "/dev/sde" | awk '{print $1}'`;do        fuser -km $I        umount $I              echo "$I umount OK"done~