shell學習筆記(一)

 shell 學習

一.變量設置
  1.本地變量設置: 變量名=變量值
    localtest=test          設置本地變量
    echo $localtest         打印本地變量
    set                     查看本地變量
    注:本地變量只對shell當前生命週期有效,退出重新登陸後失效
  2.環境變量:可以應用於所有用戶進程
    $HOME/.bash_profile(/etc/profile)
設置方法:
export chinaitlab=shenzhen    設置環境變量
env(export)                   查看環境變量
  3.變量替換
     echo $變量名
  4.變量清除(只讀變量無法清除,請謹慎使用)
     unset 變量名 
  5.標準變量(基本都是環境變量,可以/etc/profile中定義)
     EXINIT
HOME
IFS           LINUX域之間的分隔符
LOGNAME       登陸名
MAIL          當前用戶郵箱存儲位置
MAILCHECK     檢查郵件時間間隔
MAILPATH      
TEAM          終端類型
PATH          可執行文件檢索路徑
TZ            時區
PS1           SHELL登陸提示符
PS2           在一行上面運行多個命令時使用
PWD           表示當前目錄
     SHELL         當前運行的SHELL版本
MANPATH       幫助文件路徑
TERMINFO
  6.特殊變量
     $#   傳遞到腳本的參數列表
     $*   以一個單子符串顯示所有腳本傳遞參數,與位置變量不同,此選項參數可超過9個
     $$   腳本運行的當有進程ID號
     $!   後臺運行的最後一個進程的進程ID號
     $@   與$#相同,但是在使用時加引號,並在引號中返回每個參數
     $-   顯示shell使用的當前選項,與set命令功能相同
     $?   顯示最後命令的退出狀態,0表示沒有錯誤,其它的任何值都表明有錯誤
  7.影響變量的命令
     decare: 設置或顯示變量
  -f    顯示函數名
  -r    創建只讀變量(declare和typeset)
  -x    創建轉出變量
  -i    創建整數變量
  使用+或- 可以顛倒選項的含義(-r是不可顛倒的)
 export 創建傳給子shell的變量 
   --表示選項結束,所有後續參數都是實參
-f 表示在"名-值"對中的名字是函數名。
-n 把全局變量轉換成局部變量。
-p 顯示全局變量列表
 readonly  用於顯示或設置只讀變量
        -- 表示選項結束
        -f 創建只讀變量
      set  設置或重設各種shell變量
      shift [n] 用於移動變量位置,調整位置變量,使$3的值賦於$2,          $2的值賦於$1
      typeset  用於顯示或設置變量 是declare的同義詞
      unset   用於取消變量的定義
        --  表示選項結束
        -f  刪除只讀變量,但不能取消從shell環境中刪除指定的變量和函數。如:PATH,PS1,PS2,PPID,UID,EUID等的設置。
  8.引號
     1.雙引號
  引用雙號號可以引用除字符$、`、\外的任意字符或字符串
     2.單引號 
      與雙引號類型不同的是忽略所有特殊符號
3.反引號
    把字符串當作系統命令來執行
4.反斜槓
  如是本個字符串有特殊含義,則屏蔽其特殊含義(如:*、+、……、$、`、“、|、?)
  9.運算符
     運算符是對計算機發的指令
按位運算(~、〈〈、>>、&、^、|)
~ 反運算符 把二進制中的1變爲0,0變爲1
 〈〈左移位運算符 
      如:op1<<op2(echo $[2<<4] 結果爲32)  把OP1中的二進制向左移OP2位,忽略最左端移出的各位,最右端的各位補上0值,每做一次按位左移就有實現op1乘以2
>> 右移位運算符
op1>>op2(echo $[16>>2] 結果爲4)  把OP1中的二進制向右移OP2位,忽略最右端移出的各位,最左端的各位補上0值,每做一次按位左移就有實現op1除以2
&  與比較運算符
op1&op2 (echo $[4&6] 結果爲4) op1和op2對應位,對於每個二進制來說,如果二都該位都是1,則結果爲1,否則結果爲0 
^ 異或運算符
op1^op2 (echo $[2^4] 結果爲6 ecch $[4^6] 結果爲2) 比較op1與op2的對應位,如果二者該位互補,則結果爲1;否則爲0
| 或運算符
op1|op2 (echo $[2|4] 結果爲6 echo $[2|2] 結果爲2) 比較op1與op2對應位,如果二者該位有一個是1或都是1,則結果爲1,否則爲0
通過$[]求值,表示方括號中表達式求值
 
邏輯運算符: 
0&&0  0
0&&1  0
1&&0  0
1&&1  1
0||0  0
0||1  1
1||0  1
1||1  1
 
賦值運算符
= += -=  *+ /= %= &= ^= |= <<= >>=
let count =$count + $change
let count+=$change
example:  var=65
               let var+=4
               echo $var
               69
               let var=var+10
               echo $var
               79
表達式替換
$[]和$( () )
習慣使用$[],所有shell的求值都是用整數完成
$[]可以接受不同基數的數字
  [base#n] n表示基數從2到36的任何基數
  echo $[10#8+1]
  9
  
 運算符優先級(見圖)
 

 
 
二、shell的輸入與輸出
     1.echo  
  顯示文本行或變量
  echo [option] string
  -e 解析轉義字符
  -n 回車不換行,linux系統默認回車換行
  -轉義符(\c \f \t \n)
  example:
  #!/bin/bash
  #echod
  echo -e "This echo's 3 new lines\n\n\n"
  echo "OK"
  echo
  echo "This echo's 3 new lines\n\n\n"
  echo "The log files have all been done"> mylogfile.txt
  
  結果:
       This echo's 3 new lines
 
 
 
       OK
 
       This echo's 3 new lines\n\n\n   
2.read 語句可以從鍵盤或文件的某一行文本中讀入信息,並將其同仁給一個變量。
  read varible1 varible2
   -如果只指定了一個變量,那麼read將會把所有的輸入賦給該變量,直到遇到第一個文件結束符或回車;如果輸出多個變量,它們按順序分別被賦予不同的變量。shell將用空格作爲變量之間的分隔符
example:
#!/bin  /bash
#readname
echo -n "First Name:"
read firstname
echo "Last Name"
read lastname
echo -e "Your First Name is :${firstname}\n"
echo -e "Your Last Name is :{lastname}\n"
3. cat顯示文件內容,創建文件,可以用它來顯示控制字符
cat[option] filename1 filename2 ....
-v 顯示控制字符
不分頁顯示
4.|管道 把一個命令的輸出作爲另一個命令的輸入
   df -k|awk '{print $1}'|grep -v "Filesystem"
         結果:
/dev/sda1
         /dev/sda2
         none
5. tee  把輸出的一個副本輸送到標準輸出,另一個副本拷貝到另一個文件
    -a 追加到文件末尾
    example 
who|tee who.cut
who|tee -a who.cut  
6.標準輸入。輸出和錯誤
   標準輸入描述符:0(缺省是鍵盤也可以文件和其它命令)
標準輸出描述符:1(缺省是屏幕也可以是文件)
錯誤文件描述符2 (缺省是屏幕,也可以是文件)
有12個描述符,3-9可以任意使用
7.文件重定向 改變程序運行的輸入來源和輸入地點 
    

  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章