1. 程式人生 > 其它 >2.Shell變數

2.Shell變數

目錄

Shell變數

linux系統變數

#通過命令獲取shell變數
set

自定義變數

  1. 基本語法

    • 定義變數:變數=值
    • 撤銷變數:unset 變數
    • 宣告靜態變數:readonly變數,注意:不能unset
  2. 命名規則

    • 變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭,環境變數名建議大寫。
    • 等號兩側不能有空格
    • 在bash中,變數預設型別都是字串型別,無法直接進行數值運算。
    • 變數的值如果有空格,需要使用雙引號或單引號括起來。
  3. Demo

    #定義變數A,當重新執行A=6時,則會覆蓋原值
    A=5
    #輸出
    echo $A
    #刪除變數
    unset A
    #宣告靜態的變數B=2,不能unset
    readonly B=2
    #變數預設型別都是字串型別,無法直接進行數值運算
    C=1+2 
    echo $C #會輸出1+2
    #變數的值如果有空格,需要使用雙引號或單引號括起來
    D="Hello Word"
    #可把變數D提升為全域性環境變數,可供其他Shell程式使用
    export D
    

其他變數

$n

  1. 基本語法

​ 功能描述:n為數字,$0代表該指令碼名稱,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如${10}

  1. Demo

    輸出該指令碼檔名稱、輸入引數1和輸入引數2 的值

    #建立
    touch parameter.sh
    #編輯
    vim parameter.sh
    #獲取
    #!/bin/bash
    echo "$0  $1   $2"
    #執行
    ./parameter.sh p1  p2
    #輸出
    parameter.sh p1 p2
    

$#

  1. 基本語法

    ​ 功能描述:獲取所有輸入引數個數,常用於迴圈。

  2. Demo

    獲得引數數量

    vim parameter.sh
    #!/bin/bash
    echo "$0 $1 $2"
    #新增如下
    echo $#
    #執行
    sh parameter.sh p1 p2
    #輸出
    parameter.sh p1 p2
    2#有P2 P2兩個引數
    
    

$* | $@

  1. 基本語法

    • $* (功能描述:這個變數代表命令列中所有的引數,$*把所有的引數看成一個整體)
    • $@ (功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)

    兩者區別見...

  2. Demo

    vim parameter.sh
    #!/bin/bash
    echo "$0 $1 $2"
    echo $#
    #新增如下
    echo $*
    echo $@
    #執行
    sh parameter.sh p1 p2
    #輸出
    parameter.sh p1 p2
    2#有P2 P2兩個引數
    p1 p2
    p1 p2
    
  3. 區別?

$?

  1. 基本語法

    功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。

  2. Demo

    #執行一個正確的變數命名的命令
    A=1
    #執行
    $?
    #輸出
    0 #說明上一次執行成功
    
    #執行一個錯誤的變數命名的命令
    A = 1 #帶空格
    #執行
    $?
    #輸出
    !0 #說明上一次執行失敗