日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

選擇結構讓程序更加智能

shell作為一種腳本語言,語法格式和一般編程語言比如C++語言很相似,然而在變量的格式上略有區(qū)別,需要經過一定的練習才可以熟練掌握。

程序如果逐條執(zhí)行,單純的將一些指令順序放到文件中,這就是順序結構。

這時程序的功能依然很有限,只可以處理簡單邏輯。而實際的需求是要根據當前情況進行判斷,進而給出結果。比如檢測當前主機與目標主機之間是否ping通,如果ping通輸出“可以ping通”,否則輸出“不可以ping通”,這就需要讓程序具備判斷的能力,而當下所謂的人工智能也是基于最基礎的判斷,讓程序在不同閾值下做出最優(yōu)選擇。

test命令

Shell中的 test 命令用于檢查某個條件是否成立,它可以進行數(shù)值、字符和文件三個方面的測試。

test命令用exit code返回結果,而不是使用stdout。0表示真,非0表示假。

數(shù)值測試:

參數(shù)

說明

-eq

等于則為真

-ne

不等于則為真

-gt

大于則為真

-ge

大于等于則為真

-lt

小于則為真

-le

小于等于則為真


 

test也可以使用[]代替

 

字符串測試

參數(shù)

說明

=

等于則為真

!=

不相等則為真

-z 字符串

字符串的長度為零則為真

-n 字符串

字符串的長度不為零則為真


 

文件測試

參數(shù)

說明

-e 文件名

如果文件存在則為真

-r 文件名

如果文件存在且可讀則為真

-w 文件名

如果文件存在且可寫則為真

-x 文件名

如果文件存在且可執(zhí)行則為真

-s 文件名

如果文件存在且至少有一個字符則為真

-d 文件名

如果文件存在且為目錄則為真

-f 文件名

如果文件存在且為普通文件則為真

-c 文件名

如果文件存在且為字符型特殊文件則為真

-b 文件名

如果文件存在且為塊特殊文件則為真


 

邏輯運算符&&和||

&& 表示與,|| 表示或
二者具有短路原則:
expr1 && expr2:當expr1為假時,直接忽略expr2
expr1 || expr2:當expr1為真時,直接忽略expr2
表達式的exit code為0,表示真;為非零,表示假。
hioier@yunpc:~/scripts$ test -e test.sh && echo "exist" || echo "Not exist"
Not exist

if語句

單分支

if condition
then
    command1 
    command2
    ...
    commandN 
fi
a=3
b=4

if [ $a -lt $b ] && [ $a -gt 2 ]
then
    echo "YES"
fi

雙分支

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi
a=3
b=4

if [ $a -gt $b ] && [ $a -gt 2 ]
then
    echo "YES"
else
    echo "NO"
fi

多分支

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

另外,Shell 還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用于將測試條件連接起來,其優(yōu)先級為: ! 最高, -a 次之, -o 最低。

declare -i score=69

if test $score -ge 90 -a $score -le 100
then
    echo "A"
elif test $score -ge 80 -a $score -lt 90
then
    echo "B"
elif test $score -ge 60 -a $score -lt 80
then
    echo "C"
else
    echo "D"
fi

case語句

case ... esac 為多選擇語句,與其他語言中的 switch ... case 語句類似,是一種多分支選擇結構,每個 case 分支用右圓括號開始,用兩個分號 ;; 表示 break,即執(zhí)行結束,跳出整個 case ... esac 語句,esac(就是 case 反過來)作為結束標記。

可以用 case 語句匹配一個值與一個模式,如果匹配成功,執(zhí)行相匹配的命令。

case ... esac 語法格式如下:

case $變量名稱 in
    值1)
        command1
        command2
        ...
        commandN
        ;;  # 類似于C/C++中的break
    值2)
        command1
        command2
        ...
        commandN
        ...
        ;;
    *)  # 類似于C/C++中的default
        command1
        command2
        ...
        commandN
        ...
        ;;
esac
declare -i n
read -p "請輸入1-4之間的數(shù)字:" n

case $n in
    1) echo "選擇1"
    ;;
    2) echo "選擇2"
    ;;
    3) echo "選擇3"
    ;;
    4) echo "選擇4"
    ;;
    *) echo "請輸入正確的數(shù)字"
    ;;
esac

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定