shell 四 邏輯表示式

2021-09-26 15:48:37 字數 3587 閱讀 1973

邏輯操作符(閘電路)

說明:學習中,使用中記憶!

and 乘法,or是加法
練習

[root@server1 mnt]# ll

total 8

---------- 1 root root 11 aug 29 12:29 temp

drwxr-xr-x 4 root root 34 aug 29 12:12 wzj

-rw-r--r-- 1 root root 56 aug 30 11:36 wzj.sh

[root@server1 mnt]# f1=/mnt/temp;f2=/mnt/wzj.sh

[root@server1 mnt]# [ -f "$f1" -a -f "$2" ] && echo 1 || echo 0

0# 說明:拆開可以用&&來連線!

[root@server1 mnt]# [ -f "$f1" ] && [ -f "$2" ] && echo 1 || echo 0

# 注意:上述的區別,是不是乙個整體!

細節f也是-h(link)!

跟著標準學習,之後自己變動!

練習2

開發shell指令碼分別實現

(1)定義變數(接受指令碼傳參變數),指令碼傳參(判斷引數個數)以及read讀入的方式(有提醒)比較2個整數大小 # 三種方式!

(2)用條表示式(不使用if)進行判斷並以螢幕輸出的方式提醒使用者比較結果

(3)當用指令碼傳參以及read讀入的方式需要對變數是否為數字、並且傳參個數不對給予提示

判斷:如何在shell中判斷乙個變數是否為整數

利用expr做計算時變數或字串必須是整數的規則

把乙個變數或字串和乙個已知的整數(非0)相加

結論:看命令返回的值是否為0.如果為0,就認為加法的變數或字串為整數

#!/bin/bash

#(1)read讀入兩個整數

read -p "please input two nums:" number1 number2

# a=$number1;b=$number2

# shell中多行注釋的方式

:指令碼傳參的形式(方式1)!

[ "$#" -ne 2 ] &&

# 判斷是不是整數(單個判斷,需要乙個乙個的來)

[ "`echo "$1" | sed -r 's#[^0-9]##g'`" = "$1 ] ||

eof########可能的三種結果########

#(2) 判斷是不是整數-->小技巧

expr $number1 + $number2 + 0 &>/dev/null ||

#(3) 進行判斷-->相等

[ "$number1" -eq "$number2" ] &&

#(4) 進行判斷--大於

[ "$number1" -ge "$number2" ] &&

#(5) 進行判斷--小於

[ "$number1" -le "$number2" ] &&

另一種思路:判斷是不是整數

[ "`echo "$1" | sed -r 's#[^0-9]##g'`" = "$1 ] && echo 1 || echo 0

# r-->擴充套件正規表示式!

# 思路:把不是數字的刪除看與本身是否相等!

get小技巧

vim 中可以用#代替反斜槓/
核心:健壯性!

需求2:列印選擇選單,一鍵安裝web服務

#!/bin/bash

#(0)定義函式

menu()是錯誤的--->是正確的!

[ -x /mnt/lnmp.sh ] ||exit 2

# 執行

/mnt/lnmp.sh

# 執行完之後推出

exit 0

}[ "$num" = "2" ]&&

# 其它的情況-->使用者輸入其它情況

echo "input error"

exit 1

多級選單:

#!/bin/bash

#(1)將環境載入進來-->做判斷-->source進來

[ -f /etc/init.d/functions ] && . /etc/init.d/functions

#(2)多級選單--->有顏色顯示

function menu()

#(3)事先定義好的lamp選單--->安裝各個模組

function lamp_menu()

function lnmp_menu()

clear

menu

while true ;do

read -p "##please enter your first_menu choice:[1-4]" num1

expr $num1 + 1 &>/dev/null #這裡加1,判斷輸入的是不是整數。

if [ $? -ne 0 ];then #如果不等於零,代表輸入不是整數--->錯誤的話就迴圈,知道輸入正確!

echo "----------------------------"

echo "| waring!!! |"

echo "|please enter right choice!|"

echo "----------------------------"

sleep 1

fi# 判斷哪個選項

case $num1 in

1)clear

lamp_menu

;;2)

clear

lnmp_menu

;;3)

clear

break

;;4)

clear

menu

;;*)

clear

echo -e "\033[31myour enter a number error,please enter again choice:[1-4]: \033[0m"

menu

esac

done

每個選項對應乙個指令碼

screen命令

shell 比較邏輯表示式

a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...

邏輯表示式

1.比較表示式只能描述1個條件 2.邏輯表示式可以描述多個條件,並且使用邏輯運算子來指定多個條件之間的關係 符號含義 與 ll或 非 邏輯與表示式 邏輯與 由 連線起來的邏輯表示式,只要當兩邊的條件都成立的時候,整個邏輯表示式猜成立,只要有一邊的條件不成立,那麼整個邏輯表示式都不成立 表示式結果 1...

邏輯表示式

我們知道,在c c 中,邏輯真與邏輯假分別用1和0來表示。現在,請定義logical類來表示乙個邏輯表示式。包括 1.2個int型別的屬性a和b,1個char型別的屬性op,其中a和b只能為0或1,是邏輯表示式的2個運算元 op是 四種運算子之一,分別表示異或 同或 與 或。2.建構函式logica...