1. 程式人生 > >《鳥哥的Linux私房菜》之shell中的變數

《鳥哥的Linux私房菜》之shell中的變數

1、變數的定義
  var=value
  直接使用key=value的形式,等號中間不能有空格等空白字元

2、變數的輸出
  echo ${varName}
  通過echo輸出內容 ${xxx}表示引用某個叫xxx的變數
  Note:如果echo 後是'',那麼單引號內的內容原樣輸出 ,如果是""那麼雙引號內的內容可能會經過"計算"後再
  輸出,如果要輸出的內容有特殊字元要麼通過轉義字元使用單引號
3、取消變數
  unset varName
4、$( someCommand ) 或者 ` someCommand ` 表示先執行()和``中間的命令
5、使用env/set/export檢視環境變數
6、$RANDOM生成隨機數
7、$表示當前程序的PID,?表示上一條命令的返回值(0代表成功,否則代表失敗)
   所以可以使用$?獲取上一條命令的執行成功與否
8、預設情況下,子shell是不能訪問父shell的變數的,如果想讓子shell訪問父shell的環境變數,那麼久需要 
   在父shell中export該變數
9、在shell中定義陣列變數使用,shell中的下標從1開始
    v[1]="A"
    v[2]="B"
    v[3]="C"
10、如果需要限制使用者的使用資源可以使用ulimit命令(用到的時候在查)
11、變數內容的刪除/替換/
   v=/root/lyzx/bin:/root/lyzx/sbin:/home/prod/bin:/home/prod/sbin
   echo ${v}
   echo ${v#/*bin:}   =>  /root/lyzx/sbin:/home/prod/bin:/home/prod/sbin
   echo ${v##/*bin:}   => /home/prod/sbin
   解釋:
      #表示從其前面的變數值得最左邊開始往後刪除,刪除最短的距離
      ##表示從其前面的變數值得最左邊開始往後刪除,刪除最長的距離   

   v=/root/lyzx/bin:/root/lyzx/sbin:/home/prod/bin:/home/prod/sbin
   echo ${v}
   echo ${v%:/*bin:}  => /root/lyzx/bin:/root/lyzx/sbin
   echo ${v%%:/*sbin:} => /root/lyzx/bin
    解釋:
        %表示從其最後面往前刪除,刪除最短的距離
        %%表示從其後面往前刪除,刪除最長的距離
   
   v=/root/lyzx/bin:/root/lyzx/sbin:/home/prod/bin:/home/prod/sbin
   ${v}
   ${v/sbin/SBIN}  => /root/lyzx/bin:/root/lyzx/SBIN:/home/prod/bin:/home/prod/sbin
   ${v/sbin//SBIN}  => /root/lyzx/bin:/root/lyzx/SBIN:/home/prod/bin:/home/prod/SBIN
 
  解釋:
   / 表示把其後的替換為最後的文字,只替換第一個
   //表示把其後的替換為最後的文字,替換所有
   
   echo ${v-v1}   //當v變數沒有定義時,返回v1
   echo ${v:-v1}  //當v變數沒有定義、或者為空字串時,返回v1