bash中的變量詳解

    在bash中,巧妙地運用變量,能夠大大減輕編程的工作量,下面讓我們來詳細了解一下bash的變量.

bash中的變量種類:

    根據變量的生效范圍等標準:

        本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效

        環境變量:生效范圍為當前shell進程及其子進程

        局部變量:生效范圍為當前shell進程中某代碼片斷(通常指函數)

        位置變量: $1, $2, …來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數

        特殊變量: $?, $0, $*, $@, $#


本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效

    變量賦值: name=‘value’,

    可以使用引用value:

    (1) 可以是直接字串; name=“root"

    (2) 變量引用: name="$USER"

    (3) 命令引用: name=`COMMAND`, name=$(COMMAND)

    變量引用: ${name}, $name

    "":弱引用,其中的變量引用會被替換為變量值

    '':強引用,其中的變量引用不會被替換為變量值,而保持原字符串

    顯示已定義的所有變量: set

    刪除變量: unset name

    當變量不再需要時,要釋放變量,以減輕內存的負擔


環境變量(當前shell及其子進程均可引用)

    變量聲明、賦值

    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."

       

  [root@localhost testdir]# cat 1.sh
        #!bin/bash
        #
        ./2.sh "$@"
        echo =================
        ./2.sh "$*"
        [root@localhost testdir]# cat 2.sh
        echo $1
        echo $2
        [root@localhost testdir]# bash 1.sh 11 22
        11
        22
        =================
        11 22


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

(0)
hunterhunter
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • if、case 語法

    1. 條件選擇 if 語句         選擇執行:             ? 單分支      &nbs…

    Linux干貨 2016-08-22
  • 文件權限的設置和文件的特殊權限及其命令使用

    1. linux的系統管理員很重要的任務就是管理自己服務器的文件,對于權限設置等級森嚴的linux文件系統,文件系統的訪問權限管理自然也是linux管理員必不可少的一項技能。 在linux中文件的基本權限中:被分為三大項:文件擁有者,文件擁有組,其他人。 每一項中,用三位八進制的數字來代表文件是否可讀,是否可寫,是否可執行。并根據用戶不同可以設置不同的uma…

    Linux干貨 2016-08-05
  • 網絡配置——CentOS7

    CentOS 7 網絡屬性配置 使用傳統命名方式: (1) 編輯/etc/default/grub 配置文件 GRUB_CMDLINE_LINUX ="rhgb quiet net.ifnames=0" 或:修改/boot/grub2/grub.cfg (2) 為grub2 生成其配置文件 grub2-mkconfig -o /etc/g…

    Linux干貨 2016-09-11
  • N22-第一周博客:計算機及Linux系統的入門學習了解

                                  …

    Linux干貨 2016-08-15
  • 程序包管理之YUM解析

    前言:    yum是rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,如果直接使用rpm直接安裝程序包也可以,但是需要自己手工解決程序包依賴性的問題,可能程序包的依賴性非常復雜,那么直接使用rpm安莊,就會非常麻煩,而使用YUM安裝就會自動解決依賴性的問題。大大簡化了安裝過程。  YUM客戶端配置文件: …

    Linux干貨 2016-08-24
  • 管道及重定向

    管道及重定向 1、重定向 在Linux中有時我們在命令的執行過程中,不想將執行結果顯示到屏幕上,或者將其結果輸出到其他位置 這時就需要重定向來解決這個問題了 首先了解一下Linux中的3種I/O設備: 0:標準輸入 1:標準輸出 2:標準錯誤輸出 輸出重定向:> >> 輸入重定向: < << >:將標準輸出重定向到文…

    Linux干貨 2017-07-28
欧美性久久久久