一邏輯操作符(閘電路)
說明:學習中,使用中記憶!
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...