shell腳本編程-循環語句練習

練習:用for實現git

  一、判斷/var/目錄下全部文件的類型bash


 

#!/bin/bash
 
 #Version:1.0
 #Create time:2016-08-15 11:59:26
 #Description:一、判斷/var/目錄下全部文件的類型
 FILE=`ls /var/`
 for I in $FILE
 do  
     if [ -f /var/$I ] ; then
         echo "$I is a commom file"
     elif [ -d /var/$I ] ; then
         echo "$I is a document file"
     else
         echo "$I is a other file"
     fi
 done
 unset FILE

二、添加10個用戶user1-user10,密碼同用戶名網絡

 

#!/bin/bash
  
  #Version:1.0
  #Create time:2016-08-15 12:23:52
  #Description:二、添加10個用戶user1-user10,密碼同用戶名
  for I in `seq 10`
  do
      useradd user$I &> /dev/null
      echo "user$I" |passwd --stdin user$I &> /dev/null
      echo "user$I add success"
  done

三、/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每一個文件,以K開頭的文件輸出爲文件加stop,以S開頭的文件輸出爲文件名加start;ide

「K34filename stop」
「S66filename start」
 #!/bin/bash
 
 #Version:1.0
 #Create time:2016-08-15 12:38:21
 #Description:三、/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每一個文件,以K開頭的文件輸出爲文件加stop,以S開頭的>    文件輸出爲文件名加start;
 #「K34filename stop」
 #「S66filename start」
 FILE=`ls /etc/rc.d/rc3.d`
 for I in $FILE
 do
     find /etc/rc.d/rc3.d -name "S*" -exec mv {} "{} start" \; &> /dev/null
     find /etc/rc.d/rc3.d -name "K*" -exec mv {} "{} stop" \; &> /dev/null
 done

四、寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和spa

 

#!/bin/bash
 
 #Version:1.0
 #Create time:2016-08-15 13:51:02
 #Description:寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和
 let SUM=0
 read -p "input num: " NUM
 expr $NUM + 0 &> /dev/null
 [ $? -ne 0 ] && echo "please input digitnum" && exit 100
 [ $NUM -le 0 ] && echo "input the right num" && exit 99
 for I in `seq $NUM`
 do
     SUM=$(($SUM+$I))
 done
 echo "the sum is $SUM"
 unset SUM
 unset NUM

五、寫一個腳本,提示請輸入網絡地址,如192.168.0.0,判斷輸入的網段中主機在線狀態ip

#!/bin/bash
#Version:1.0
#Create time:2016-08-15 14:01:08
#Description:寫一個腳本,提示請輸入網絡地址,如192.168.0.0,判斷輸入的網段中主機在線狀態
read -p "input a IP address: " IP
echo "$IP" |grep -qE '^((\<[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)\.){3}(\<[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5    ]\>)$'
[ $? -ne 0 ] && echo "please input the right IP" && exit 100
IP1=`echo "$IP"|cut -d. -f1-3`
for I in `seq 255`
do
    ping -c1 -W1 "$IP1.$I" &> /dev/num && echo "$IP.$I is up"
done
unset IP
unset IP1

六、打印九九乘法表input

#!/bin/bash
#Version:1.0
#Create time:2016-08-15 14:25:55
#Description:打印九九乘法表
for I in `seq 9`
do
    for J in `seq $I`
    do
        echo -ne "${I}X$J=$(($I*$J))\t"
    done
    echo
done

  

  練習:用while實現it

一、求100之內全部正整數之和
#!/bin/bash
#Version:1.0
#Create time:2016-08-15 14:36:00
#Description:求100之內全部正整數之和
let SUM=0
let NUM=1
while [ $NUM -le 100 ] 
do
    SUM=$(($SUM+$NUM))
    NUM=$(($NUM+1))
done
echo "1+2+...+100=$SUM"


二、經過ping命令探測172.16.250.1-254範圍內的全部主機的在線狀態,統計在線主機和離線主機各多少。io

#!/bin/bash
#Version:1.0
#Create time:2016-08-15 14:43:24
#Description:經過ping命令探測172.16.250.1-254範圍內的全部主機的在線狀態,統計在線主機和離線主機各多少。
let NUM=1
COUNT1=0
COUNT2=0
while [ $NUM -le 254 ]
do
    ping -c1 -W1 "172.16.250.$NUM" &> /dev/null
    if [ $? -eq 0 ];then
        echo "172.16.150.$NUM is up"
        COUNT1=$(($count1+1))
    else
        COUNT2=$(($COUNT2+1))
    fi
    NUM=$(($NUM+1))
done
    echo "total $COUNT1 is up,$COUNT2 is down"
unset NUM
unset COUNT1
unset COUNT2

三、打印九九乘法表【思路:第n行執行n次】class

#!/bin/bash
#Version:1.0
#Create time:2016-08-15 18:32:03
#Description:打印九九乘法表
NUM=1
while [ $NUM -le 9 ]
do
    for I in `seq $NUM`
    do
        echo -ne "${NUM}X$I=$(($NUM*$I))\t"
    done
    NUM=$(($NUM+1))
    echo
done
unset NUM

         

四、利用變量RANDOM生成10個隨機數字,輸出這個10數字,並顯示其中的最大者和最小者[【思路:循環前先賦值最小值,循環次數減一】

#!/bin/bash
#Version:1.0
#Create time:2016-08-15 18:40:10
#Description:利用變量RANDOM生成10個隨機數字,輸出這個10數字,並顯示其中的最大者和最小者
let I=1
let MAX=0
let MIN=$RANDOM
echo $MIN
while [ $I -le 9 ]
do
    let NUM=$RANDOM
    echo "$NUM"
    if [ $NUM -le $MAX ];then
        if [ $NUM -le $MIN ];then
            MIN=$NUM
        fi
    else
        MAX=$NUM
    fi
    I=$(($I+1))
done
echo "the max num is $MAX"
echo "the min num is $MIN"
unset I
unset MAX
unset MIN
unset NUM


五、打印國際象棋棋盤【思路:黑色是行數和列數相等或者行數和列數都是奇數,白色是行數和列數是一奇一偶】

#!/bin/bash
#Version:1.0
#Create time:2016-08-16 14:40:00
#Description:打印國際象棋棋盤
let I=1
while [ $I -le 8 ]
do
    for J in `seq 8`
    do
        [ $((($I+$J)%2)) -eq 0 ] && echo -ne "\033[47m  \033[0m" || echo -ne "\033[40m  \033[0m"
    done
    I=$(($I+1))
    echo
done
相關文章
相關標籤/搜索