自學Linux Shell11.3-使用變量

點擊返回 自學Linux命令行與Shell腳本之路html

11.3-使用變量

Shell腳本的執行一般能夠採用如下幾種方式:
    1):bash script-name或sh script-name(推薦使用)
    2):path/script-name 或./script-name(當前路徑下執行腳本)
    3):source script-name或 . script-name #→注意」.」點號。
    4):sh<script-name或cat scripts-name|sh(一樣適合bash)shell

定義變量時,變量名不加美圓符號($,PHP語言中變量須要),如:bash

           your_name="runoob.com"
spa

變量名的命名須遵循以下規則命令行

  • 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭
  • 中間不能有空格,可使用下劃線(_)
  • 不能使用標點符號
  • 不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)
  • 變量名和等號之間不能有空格
  • 若是一行只有一條命令,則每一行不用以分號結尾,每一條命令以換行分隔
    若是一行有多條命令,則每一條命令以分號分隔,但建議每行只有一條命令

1.普通變量:
1.1 環境變量:變量必須是大寫3d

  • 配置永久性的環境變量,全局變量的配置文件:/etc/profile 、/etc/bashrc 基本上使用 /etc/profile
  • 配置用戶的環境變量的配置文件,分別是:用戶的主目錄下的隱藏文件:~/.bash_profile 、 ~/.bash_bashrc
  • 臨時設置 # export ZSY=1
  • 設置全部用戶生效的目錄 :/etc/profile.d/ :目錄下必須是腳本不然沒法使用
  • 若是寫一個JAVA的腳本,要把JAVA環境變量放入腳本內,特別是定時任務執行的時候
  • 顯示環境變量:
    # env //* 顯示的環境變量
    # set //* 顯示的環境變量更多
  • 取消環境變量
    # unset <環境變量名> //* 臨時取消變量
       進入文件刪除變量

1.2 環境變量的意義:htm

  • UID :當前用戶的UID
  • USER :當前登陸的用戶
  • HOME :當前的用戶主目錄
  •  _= :上一條命令的最後一個參數
  • BASH :調用實例時使用的全路徑
  • PS1 :當前的終端
  • PATH :命令所在路徑

1.3 局部變量:blog

  • 通常連續的字符串,數字,路徑等能夠不加任何引號,不過無引號的狀況最好用雙引號替代之。
  • 若是變量中使用其餘變量時,則不可使用單引號不然沒法使用:以下:

  • 若是變量中有空格的話,就必須使用雙引號不然沒法輸出:以下:

1.4 引號的意義進程

  • 無引號:把內容輸出出來,會將未含有空格的字符串視爲一個總體輸出; 若是有命令(要在反引號中的)、變量、特殊轉義符解析出結果真後子在輸出最終內容來,若是字符串中有空格等特殊字符則則不能完整輸出,須要加雙引號,通常連續的字符串,數字,路徑等能夠不加任何引號, 不過無引號的狀況最好用雙引號替代之。
  • 單引號:能夠說是所見即所得:即將單引號內的全部內容都原樣輸出,或者描述爲裏面看到的是什麼就會輸出什麼
  • 雙引號:把雙引號內的全部內容都輸出出來;若是有命令(要在反引號中的)、變量、特殊轉義符解析出結果真後子在輸出最終內容來
  • 反引號:通常用於執行命令,執行的時候命令會執行,同理可使用 a=$(ls):結果相同 (注意反引號是鍵盤~下面的`)

1.5 變量定義小結:
普通變量:
    a=1 連續的數字字符串
    a="/etc/rc.local $USER" 解析結果後輸出
    a='$USER' 原樣輸出
命令內容定義:
    a=`ls` 反引號 //* 將反引號中字符當作命令輸出 
    a=$(ls)ip

2. 特殊變量:
2.1 位置變量

  • $n 獲取當前執行的shell腳本的第n個參數值(參數值默認以空格區分,若是參數加了雙引號,則將雙引號的整個做爲一個參數, 無論其中是否有空格),n=1..9 ,當 n 爲0時表示腳本的文件名,若是n大於9,用大括號括起來${10},參數以空格隔開。
  • $0 獲取當前腳本自己的名字
  • $1 獲取當前傳遞給該shell腳本的第一個參數
  • $2 獲取當前傳遞給該shell腳本的第二個參數
  • $# 獲取當前傳給腳本的參數個數
  • $$ 獲取當前腳本運行的當前進程 PID 號
  • $@ 獲取當前傳給腳本的全部參數的列表
  • $* 獲取當前以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個
  • $? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤

例1:

例2:

例3:

相關文章
相關標籤/搜索