1. 程式人生 > >shell腳本:變量,文件判斷,邏輯運算等紀要

shell腳本:變量,文件判斷,邏輯運算等紀要

是否為空 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腳本:變量,文件判斷,邏輯運算等紀要