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 21:06
下一篇 2016-08-15 09:22

相關推薦

  • 如何將遷移home到獨立分區中

        背景(centos7中):         由于在剛開始學習linux時磁盤分配追求簡單,只是把一個磁盤簡單的分了3個分區?,F在,因用戶數據增多、磁盤空間變少、當數據撐滿磁盤時,會導致系統崩潰。為防止此種情況的發生我必須把把根下的/home 目錄遷移出 來獨立分…

    2017-08-10
  • linux部署lamp,samba,nfs

    linux部署lamp,samba,nfs 實驗拓撲圖 實驗要求 五臺機器使用linux模擬 一臺機器做數據庫服務器,samba共享服務器,nfs共享服務器 其中兩臺做http服務器 一臺做PC機 實驗目的 samba服務器向一臺http服務器提供共享服務,做http的DocumentRoot,nfs服務器一樣作為另一臺http服務器的DocumentRoo…

    2017-05-02
  • LNMP (nginx+php-fpm)

    Nginx簡明: 特性: 采用模塊化設計,較好的擴展性;高可靠性 ?master/worker支持熱部署:不停機更新配置文件、更換日志文件、列新服務器版本低內存消耗:10000個keep-alive連接模式下的非活動連接僅消耗2.5M內存;event-dreiven,aio,mmap基本功能;靜態資源的web服務器http協議反向代理服務器;pop3/ima…

    2017-06-28
  • 幾種常見開源協議

    幾種常見的開源協議: 一、GPL詳解: 在自由軟件所使用的各種許可證之中,最為人們注意的也許是通用公開許可證(General Public License,簡稱GPL)。 GPL同其它的自由軟件許可證一樣,許可社會公眾享有:運行、復制軟件的自由,發行傳播軟件的自由,獲得軟件源碼的自由,改進軟件并將自己作出的改進版本向社會發行傳播的自由。 GPL還規定:只要這…

    Linux干貨 2016-07-12
  • 五種開源協議的比較(BSD,Apache,GPL,LGPL,MIT)

    BSD開源協議(original BSD license、FreeBSD license、Original BSD license) BSD開源協議是一個給于使用者很大自由的協議?;旧鲜褂谜呖梢浴睘樗麨椤?可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。 但”為所欲為”的前提當你發布使用了BSD協議的代碼,或則以BSD協議代碼…

    Linux干貨 2017-01-30
  • 開篇

    新人報道

    Linux干貨 2016-10-24

評論列表(1條)

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

    總結的很好,很實用

欧美性久久久久