shell程式設計–bash變數介紹

大雄45發表於2020-01-23
導讀 程式設計--bash變數介紹 ,變數是計算機記憶體的單元,其中存放的值可以改變。當 Shell  需要儲存一些資訊時,如一個檔名或一個數字,就把它存放在一個變數中。
bash變數型別
  • 本地變數
本地變數的作用域為整個bash程式。區域性變數屬於本地變數。在bash中宣告變數的週期隨著該程式的週期而存在。
定義本地變數:set VARNAME=Jerry
引用變數:${VARNAME},括號可省略
區域性變數的宣告:local VARNAME=VALUE
  • 環境變數
環境變數的作用域為當前shell程式及其子程式宣告:export VARNAME=VALUE或者VARNAME=VALUE; export VARNAME指令碼在執行時會啟動一個子shell程式命令列中啟動的指令碼會繼承當前shell的環境變數系統自動執行的指令碼(非命令列啟動)就需要自我定義需要各環境變數
  • 位置變數
$1, $2, ...shift: 對引數進行輪換,預設輪換一個引數#!/bin/bash#echo $1shiftecho $1shiftecho $1shift./filetest.sh /etc/fstab /etc/inittab    $1:/etc/fstab 
    $2:/etc/inittab
  • 特殊變數
$?: 上一個命令執行狀態的返回值
    程式執行,可能有兩類返回值:
        程式執行結果
        程式狀態返回程式碼(0-255)            0: 正確執行            1-255: 錯誤執行。1、2、127系統預留$#: 引數的個數$*: 引數列表$@: 引數列表
變數的撤銷及檢視
  • 撤銷變數
unset VARNAME
  • 檢視變數
set: 檢視當前shell中的變數(包括環境變數和本地變數)
printenv、env、export: 檢視當前shell中的環境變數
變數命名規則
1、變數與變數內容以一個等號"="來連線,如下所示:
    MyName=Dabric
2、等號兩邊不能直接接空格符,如下錯誤:
    MyName= Dabric 或 Myname=Dab ric
3、變數名稱只能是英文字母與數字,但是開頭字元不能時數字;
4、變數內容若有空格符可使用雙引號或單引號將變數內容結合起來,但雙引號內的特殊字元如$等,可以保有原本的特性,如下所示:
    var="lang is $LANG" 則echo $var 可得 lang is en_US.UTF-8
單引號內的特殊字元則僅為一般字元(純文字),如下所示:
    var='lang is $LANG' 則echo $var 可得 lang is $LANG
    總之在bash中:    "":弱引用,可以實現變數替換    '':強引用,不完成變數替換
5、可以使用跳脫字元"\"將特殊字元(如[ENTER], $, \, 空格符, '等)變成一般字元,如:
    MyName=Dab\ ric
6、在一串指令的執行中,還需要藉由其他額外的指令所提供的資訊時,可以使用反引號"`COMMAND`"或"$(COMMAND)"。例如想要取得核心版本的設定:
    version=$(uname -r) 
    echo $version如何進入到您目前核心的模組目錄:
    # cd /lib/modules/`uname -r`/kernel
    # cd /lib/moudles/$(uname -r)/kernel
7、若改變數為擴增變數內容時,則可用"$變數名稱"或${變數}累加內容,如下所示:
    PATH="$PATH":/home/bin 或 PATH=${PATH}:/home/bin
8、若該變數需要在其他子程式執行,則需要以export來使變數變成環境變數:
    # export PATH
9、通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元,方便判斷;
10、取消變數的方法為使用unset:"unset 變數名稱"例如取消MyName的設定:
    # unset MyName
變數可以在bash配置檔案(~/.bashrc)中直接指定,保證每次登入shell該變數都存在

原文來自: 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2674278/,如需轉載,請註明出處,否則將追究法律責任。

相關文章