shell腳本編程之變量詳解

什么是變量
    變量是計算機內存的單元,其中存放的值可以改變。當Shell腳本需要保存一些信息時,如一個文件名或是一個數字,就把它存放在一個變量中。每個變量有一個名字,所以很容易引用它。 使用變量可以保存有用信息,使系統獲知用戶相關設置,變量也可以用于保存暫時信息。
變量:變量類型
作用:
    1、數據存儲格式
    2、參與的運算
    3、表示的數據范圍
類型:
    字符
    數值:整型、浮點型
強類型:定義變量時必須指定類型、參與運算必須符合類型
要求;調用未聲明變量會產生錯誤
    如 java,python
弱類型:無須指定類型,默認均為字符型;參與運算會自動
進行隱式類型轉換;變量無須事先定義可直接調用
    如: bash 不支持浮點數
變量命名法則:
    1、不能使程序中的保留字:例如if, for;
    2、只能使用數字、字母及下劃線,且不能以數字開頭
    3、見名知義
    4、統一命名規則:駝峰命名法
根據變量的生效范圍等標準:
    本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效
    環境變量:生效范圍為當前shell進程及其子進程
    局部變量:生效范圍為當前shell進程中某代碼片斷(通常指函數)
    位置變量: $1, $2, ...來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數
    特殊變量: $?, $0, $*, $@, $#
變量賦值: name=‘value’,
? 可以使用引用value:
    (1) 可以是直接字串; name=“root"
    (2) 變量引用: name="$USER"
    (3) 命令引用: name=`COMMAND`, name=$(COMMAND)
? 變量引用: ${name}, $name
    "":弱引用,其中的變量引用會被替換為變量值
    '':強引用,其中的變量引用不會被替換為變量值,而保
持原字符串
? 顯示已定義的所有變量: set
? 刪除變量: unset name
變量聲明、賦值:
    export name=VALUE
    declare -x name=VALUE
? 變量引用: $name, ${name}
顯示所有環境變量:
    export
    env
    printenv
? 刪除: unset name
bash有許多內建的環境變量: PATH, SHELL, USRE,UID,HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1
只讀變量:只能聲時,但不能修改和刪除
    readonly name
    declare -r name
位置變量:在腳本代碼中調用通過命令行傳遞給腳本的參數
    $1, $2, ...:對應第1、第2等參數, shift [n]換位置
    $0: 命令本身
    $*: 傳遞給腳本的所有參數,全部參數合為一個字符串
    $@: 傳遞給腳本的所有參數,每個參數為獨立字符串
    $#: 傳遞給腳本的參數的個數
    $@ $* 只在被雙引號包起來的時候才會有差異
示例:判斷給出的文件的行數
    linecount="$(wc -l $1| cut -d' ' -f1)"
    echo "$1 has $linecount lines."

原創文章,作者:RecallWzc,如若轉載,請注明出處:http://www.www58058.com/35713

(0)
RecallWzcRecallWzc
上一篇 2016-08-14
下一篇 2016-08-15

相關推薦

  • shell 腳本 【上】

    shell 腳本編程 【上】 程序就是指令加上數據組合而成 程序編程風格:  過程式:以指令為中心,數據服務于指令  象式:以數據為中心,指令服務于數據  編程語言:  低級:匯編  高級:  編譯:高級語言–>編譯器–>目標代碼 java,C#  解釋…

    Linux干貨 2016-08-15
  • 系統基礎之用戶,組管理作業題

    、創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser 1 2 3 [root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp&nbsp…

    Linux干貨 2016-08-04
  • Linux進程查看與管理命令總結

    Linux進程查看與管理命令總結 內核的功能: 進程管理 文件系統 網絡功能 內存管理 驅動程序 安全功能 Process:運行中程序的一個副本。(存在生命周期) Linux內核存儲進程信息的固定格式:task struct 多個任務的task struct組件的鏈表:task list 進程創建: init 父子關系 進程:都有其父進程創建 fork(),…

    Linux干貨 2016-09-07
  • 02Linux上終端的類型

    一、終端的概念 所謂終端就是在一個連接主機的端子上面接入鼠標、鍵盤、顯示器等所組成的一個組合。終端用于用戶與主機之間的交互。早期的時候,在大型主機上,想使用主機的用戶很多,但是主機卻只有一個,也不能實現人手一臺。于是為了讓一臺主機給多個用戶使用,便產生了多個終端和多個用戶,這樣每個用戶只要有一個終端變可以與主機交互了。 二、終端的種類 終端的類型有四類:物理…

    Linux干貨 2016-10-14
  • 08RPM的簡單實用

    rpm命令,安裝(-i,–install)、卸載、升級(-U,-F)、查詢(-q,–query)、校驗(-V,–verify)、數據庫維護 安裝:rpm {-i|–install} [install-options] PACKAGE_FILE… v:可視化 h:以#顯示進度 rpm -ivh package_f…

    Linux干貨 2016-11-03
  • MBR詳解

    前言:     話說,現在買電腦如果預裝win8以上的系統,基本上都是GPT。想當年博主買的電腦預裝的win8磁盤分區樣式就是GPT,而且貌似如果想把win8換win7就得把GPT改成MPR。雖然會在最后提到GPT,不過本文還是主要講解MBR,并通過實驗驗證。 機械硬盤: 主引導記錄(Master Boot Record,縮寫:MBR),…

    Linux干貨 2016-11-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-15 09:58

    總結的很好,很實用

欧美性久久久久