shell腳本:變量,文件判斷,邏輯運算等紀要
阿新 • • 發佈:2018-04-14
是否為空 add 邏輯判斷 軟連接 ech 方式 字符串 個數 dir
shell腳本中的變量定義,引用各有不同的方式,除此之外,很常用的有文件屬性判斷,邏輯運算,數值運算等,下面記錄一下它們的屬性作用
變量
shell變量的定義分為兩種:一種是直接賦值定義,另一種是嵌套指令調用賦值:
name=yufu : 直接定義賦值
time=`date` : 指令嵌套賦值
$name $time : 調用變量
此外變量還分局部變量和全局變量,局部變量只對當前bash環境有效,環境變量全局有效,上面的定義方式是定義局部變量,全局變量定義方式如下
name=yufu
expor name
env | grep name :查看環境變量
unset name :取消環境變量
位置變量與狀態變量
$1 $2 $3 ... $9 : 從標準輸入接收參數
${10} : 十個以上參數要用花括號把數值括起來
$* :所有參數: 在腳本間調用時當成一個參數調用
$@ :等於$*作用 :在腳本間調用時可以分開調用參數
$# :參數個數
$0:顯示腳本名稱
set -- :清空位置參數
shift :參數默認向左移動一位,可指定數字
$? :指令執行狀態值 。0或者非0值
數值運算方式
x=1
y=2
z=$[x+y] 或 let z=x+y 或者 z=$((x+y))
邏輯判斷
真,假
邏輯運算:
與運算:
真 && 真 = 真
真 && 假 = 假
假 && 真 = 假
假 && 假 = 假
或運算:
真 || 真 = 真
真 || 假 = 真
假 || 真 = 真
假 || 假 = 假
非運算:
! 真 = 假
! 假 = 真
邏輯與
cmd1 && cmd2
如果cmd1為假,cmd2不需要執行,如果cmd1為真,cmd2要執行
邏輯或
cmd1 || cmd2
如果cmd1為假,那麽要執行cmd2如果為真,那麽cmd2不用執行
布爾運算
數值方式
true, false
1 0
與:
1 與 1 = 1
1 與 0 = 0
0 與 1 = 0
0 與 0 = 0
或:
1 或 1 = 1
1 或 0 = 1
0 或 1 = 1
0 或 0 = 0
換種方式
真,假
與運算:
真 && 真 = 真
真 && 假 = 假
假 && 真 = 假
假 && 假 = 假
或運算:
真 || 真 = 真
真 || 假 = 真
假 || 真 = 真
假 || 假 = 假
非運算:
! 真 = 假
! 假 = 真
邏輯運算的一個例子
[root@yufu ~]# id yufu &> /dev/null && echo "user exist" || useradd yufu
user exist
#在使用 與或 邏輯運算過程中,如果如果前面的指令執行正確才會執行後面的與運算指令,如果前面的指令執行失敗(狀態值為非0)則後面的與運算不會執行,跳過執行 或運算指令
#如果或運算在前面,規則則相反
[root@yufu ~]# [ -d /tmp/hhh ] || mkdir /tmp/hhh
條件判斷
條件判斷
test :
狀態值 0 為真 或 1為假
test $str1 = $str2
或 (常用) [ $str1 = $str2 ] 中括號前後要有空格
(常用)[ -z $var ] :判斷是否為空,可以判斷文件屬性
文件判斷
-a: 文件是否存在
-d:是否是文件夾
-f:文件是否存在
-l:是否是軟連接
-w:是否有寫權限
-x:是否有執行權限
-v:變量是否被設置了
-o:或者,多條件判斷
-n:變量是否為空
-z:判斷字符串是否為空
[] :不用正則表達式的時候用單中括號
使用正則表達式時用雙中括號[[]]
中括號中的變量最好加 “”
shell腳本:變量,文件判斷,邏輯運算等紀要