練習:用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