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

Linux Shell變數

變數分類

  1. 系統變數($HOME,$PWD,$SHELL,$USER...)
    • 顯示所有系統變數 set
  2. 使用者自定義變數

定義變數

基本語法

  1. 宣告變數: 變數=值
  2. 撤銷變數: unset 變數
  3. 宣告靜態變數: readonly 變數
    • 靜態變數不能unset

定義規則

  1. 可有字母、數字、下劃線組成,但不能以數字開頭
  2. 宣告變數的時候 變數=值, 等號兩邊不能有空格
  3. 變數名稱一般習慣大寫
  4. 如果要將指令返回值賦給變數
    • A='date'【是反引號,不是單引號!】
    • A=$(date)

舉例

  • 具體內容
  • 輸出結果

注:ehco後新增的內容會直接以文字形式輸出, 而遇到$時會將對應內容識別為變數,轉而輸出變數內容。

  • 將指令返回值賦給變數
  • 輸出結果

設定環境變數

為什麼需要設定環境變數

環境變數相當於全域性變數,按上文的方式在一個shellA定義的變數在shellB將不起作用。而如果定義一個環境變數,那麼它無論是在shellA還是在shellB中都能起作用

如何設定

  1. 在/etc/profile中新增環境變數
  2. 新增語法 : export 變數名=變數值【等號兩邊同樣不能有空格】
  3. 執行source /etc/profile使配置檔案生效

舉例:新增環境變數TOMCAT_HOME

  1. 開啟/etc/profile , 新增環境變數

  2. 執行source /etc/profile使配置檔案生效

位置引數變數

介紹

  • 當我們執行一個shell指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數
  • 比如:./myshell.sh 100 200,這個就是一個執行shell的命令列,100,200是傳入的引數
  • 類比c語言中的scanf()

基本語法

  • $n(功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如${10})
  • $(功能描述:這個變數代表命令列中所有的引數,$把所有的引數看成一個整體)
  • $@(功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)
  • $#(功能描述:這個變數代表命令列中所有引數的個數)

舉例

  • 編寫指令碼position.sh

  • 輸入引數與執行結果

預定義變數

基本介紹

shell設計者實現定義好的變數,可以在shell指令碼中直接使用

基本語法

  • $$(功能描述:當前指令碼的程序的程序號(PID))
  • $!(功能描述:後臺執行的最後一個程序的程序號(PID))
  • $?(功能描述︰最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令正確執行如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)

舉例

  • 編寫preVar.sh

  • 執行,檢視結果