while CONDITION; do【条件满足就循环,不满足就退出循环】

    STAMENT

done

until CONDITION; do【条件不满足就循环,满足就退出循环】

    STAMENT

done


for 循环还可以这么玩!!!(计算100以内所有正整数的和)

    for ((I=1 I<=100 I++)); do

         let sum+=$I

    done

脚本:

通过ping命令测试从192.168.9.1到192.168.9.254之间的所有主机是否在线

如果在线就显示“ip is up”其中的ip要换为真正的ip地址,且以绿色显示

如果不在线就显示“ip is down”ip要换成真正的ip,且显示为红色

【注释:ping -c 1 -w 1 192.168.9.254  只ping一次、只等一秒   然后echo $?】

【】



写一个脚本:

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

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

   3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟之后再分区)并为其创建三个主分区,第一个为20M 第二个为512M 第三个为128M,且期三个为swap分区类型

  (提示:将分区命令通过echo传送给fdisk即可实现)

 

#!/bin/bash

#

echo "Initial a disk "

echo -e "\033[31mWaring: \033[0m "

fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]"

read -p "your choice is " PARTDISK

if [ $PARTDISK == 'quit' ]; then

   echo "quit"

   exit 3

fi

until fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]" | grep "^Disk $PARTDISK$" &> /dev/null; do

   read -p "wrong option,yourchoice again:" PARTDISK

done

read -p "will destroy all data,continue: " CHOICE

until [ $CHOICE == 'y' -o $CHOICE == 'n' ]; do

   read -p "wrong option your choice again:" CHOICE

done

if [ $CHOICE == 'n' ]; then

   exit 5

else

dd if=/dev/zero of=$PARTDISK bs=512 count=1

sync

sleep 3

   echo 'n

   p

   1

  

   +20M

   n

   p

   2

 

   +512M

   n

   p

   3

 

   +128M

   t

   3

   82

   w' | fdisk $PARTDISK &> /dev/null

   sleep 3

   mke2fs -j $PARTDISK'1'

   mke2fs -j $PARTDISK'2'

   mkswap $PARTDISK'3'

   fi

   考试题目 


如何判定磁盘上的分区属于挂载状态?

   for I in `mount | grep "/dev/hda" | awk '{print $1}'`; do

         fuser -km $I       踢出在访问的用户

         umount $I

         echo "$I umount ok"

         done