日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell 脚本编程之for语句、if语句(2 )

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell 脚本编程之for语句、if语句(2 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、bash條件測試:

? ? ?整數測試 ? [ expression ]

? ? ?字符測試 ? ? ` expression `

? ? ?條件測試 ? ? test expression ? test 根據表達式求值的結果返回 0(真)或 1(假)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

1、整數測試:數值比較

? ? ? ? ?-gt ? 大于

? ? ? ? ?-ge ? 大于或等于

? ? ? ? ?-eq ? 等于

? ? ? ? ?-lt ? 小于

? ? ? ? ?-le ? 小于或等于

? ? ? ? ?-ne ? ?不等于

例1:寫一個腳本,生成兩個隨機數,比較其大小;顯示大數;

bash有個內置變量:$RANDOM

#!/bin/bashA=$RANDOMB=$RANDOM if [ $A -ge $B ]; thenecho "Max number is $A." elseecho "Max number is $B." fi

例2:寫一腳本,隨機生成一個整數,判定,顯示其奇偶性;

#!/bin/bash # A=$RANDOM if [ $[$A%2] -eq 0 ]; thenecho "$A: Even" elseecho "$A: Odd" fi


例3、寫一個腳本:

計算100以內所有奇數的和以及所有偶數的和;分別顯示之;

#!/bin/bash EvenSum=0 OddSum=0 for I in {1..100}; doif [ $[$I%2] -eq 0 ]; thenEvenSum=$[$EvenSum+$I]elseOddSum=$[$OddSum+$I]fi done echo "EvenSum is: $EvenSum. OddSum is: $OddSum."


例4、計算N以內所有奇數的和以及所有偶數的和;分別顯示之;N是通過參數傳遞過來的正整數;


#!/bin/bash EvenSum=0 OddSum=0 for I in `seq 1 $1`;doif [ $[$I%2] -eq 1 ]; thenOddSum=$[$OddSum+$I]elseEvenSum=$[$EvenSum+$I]fi done echo "EvenSum: $EvenSum." echo "OddSUm: $OddSum." echo "Sum: $[$EvenSum+$OddSum]"

例5、寫一個腳本,完成以下要求:

? ? ?1、添加10個用戶user1, user2, ..., user10;但要先判斷用戶是否存在,不存在而后再添加;

? ? ?2、添加完成后,顯示一共添加了幾個用戶;當然,不能包括因為事先存在而沒有添加的;

? ? ?3、最后顯示當前系統上共有多少個用戶;

#!/bin/bash Count=0 for I in {1..10}; doif id user$I &> /dev/null; thenecho "user$I exists."elseuseradd user$Iecho "Add user$I successfully."Count=$[$Count+1]fi done echo "Add $Count new users." echo "Total users: `wc -l /etc/passwd | cut -d' ' -f1`."

2、bash字符測試:

? ? ? ?>: 大于

? ? ? ?<: 小于

? ? ? ==: 等于

? ? ? =~: 判斷左邊的字符串是否能夠被右邊的模式所匹配;通常用于[[]];

? ? ? ? ?[[ $opt1 =~ $opt2 ]]一般做行首、行尾錨定;不要加引號

?單目:

? ? ?-z $STRING: 為空則為真,不空則為假;

? ? ?-n $STRING: 為空則為假,不空則真;

例6、寫一個腳本,判定用戶的shell是否為bash;


#!/bin/bash Shell=`grep "^$1:" /etc/passwd | cut -d: -f7` if [ "$Shell" == "/bin/bash" ]; thenecho "Bash User."Ret=0 elseecho "Not Bash User."Ret=9 fi exit $Ret

例7、根據用戶shell的結束符是否為sh來判定其是否為登錄用戶:

#!/bin/bash Shell=`grep "^$1:" /etc/passwd | cut -d: -f7` if [ -z $Shell ]; thenecho "No shell."exit 3 fi if [[ "$Shell" =~ sh$ ]]; thenecho "Login User."Ret=0 elseecho "None Login User."Ret=4 fi exit $Ret

二、bash測試之文件測試:

? ? 操作符 文件路徑

? ? ? ?-f: 測試其是否為普通文件,即ls -l時文件類型為-的文件;

? ? ? ?-d: 測試其是否為目錄文件,即ls -l時文件類型為d的文件;

? ? ? ?-e: 測試文件是否存在;存在為真,否則為假;

? ? ? ?-r: 測試文件對當前用戶來說是否可讀;

? ? ? ?-w: 測試文件對當前用戶來說是否可寫;

? ? ? ?-x: 測試文件對當前用戶來說是否可執行;

? ? ? ?-s: 測試文件大小是否不空,不空則真,空則假;

短路操作:只要前半段已經可以決定最終結果,后半段就不再運算;

?與運算:

? ?真 && 真 = ?真

? ?真 && 假 = ?假

? ?假 && {真|假} = 假


?或運算:

? ?假 || 0 = 0

? ?假 || 1 = 1

? ?真 || ? =1



? ?例8、給定一個路徑,判斷如果為普通文件,顯示之;如果為目錄,顯示之;

? ? ? 否則,說無法識別;

#!/bin/bash if [ ! -e $1 ]; thenecho "No such file."exit 7 fi if [ -f $1 ]; thenecho "Common file." elif [ -d $1 ]; thenecho "Directory." elseecho "Unknown file." fi

綜合例子:

寫一個腳本:可以接受一個參數,其使用形式如下:

script.sh {start|stop|restart|status}

如果參數為start,創建空文件/var/lock/subsys/script,并顯示“Starting script successfully.”;

如果參數為stop,則刪除文件/var/lock/subsys/script,并顯示“Stop script finished.”;

如果參數為restart,則刪除文件/var/lock/subsys/script后重新創建,并顯示“Restarting script successfully.”;

如果參數為status,那么:

如果/var/lock/subsys/script文件存在,則顯示為“script is running.”

否則,則顯示為“script is stopped.”

其它任何參數:則顯示“script.sh {start|stop|restart|status}”

#!/bin/bash if [ $1 == start ] ;thentouch /var/lock/subsys/scriptecho "Starting script successfully."elif [ $1 == stop ] ; thenrm -f /var/louk/subsys/scriptecho "Stop script finished."elif [ $1 == restart ];thenrm -f /var/louk/subsys/scripttouch /var/lock/subsys/scriptecho "Restarting script successfully."elif [ $1 == status ];then[ -e /var/lock/subsys/script ]&& echo "script is running." || echo "script is stopped."elseecho "script.sh {start|stop|restart|status}" fi


轉載于:https://blog.51cto.com/limian/1253914

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的shell 脚本编程之for语句、if语句(2 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。