Bash 變量

2022-10-11 16:03 更新

變量的定義

  • 變量是一個(gè)容器,用于臨時(shí)存儲(chǔ)數(shù)據(jù)(整數(shù)、浮點(diǎn)數(shù)、字符串等類任意類型的數(shù)據(jù))
  • 變量名可包含字母,數(shù)字,下劃線,并且只能以字母和下劃線開頭。

Bash 變量聲明

  1. 語法:
    Variable_name=value
  2. Bash 變量的定義規(guī)則:
    • 變量名區(qū)分大小寫,aA為兩個(gè)不同的變量。
    • 變量名可以使用大小寫字母混編的形式進(jìn)行編寫。
    • 變量名與值之間的=兩側(cè)都不能有空格。
    • 在讀取或打印變量時(shí),需使用$+變量名。
    • 變量可以寫在Bash腳本中的任何地方,在運(yùn)行時(shí),Bash會(huì)自動(dòng)將其替換為變量值。

Bash 數(shù)據(jù)類型

在 Bash 中聲明變量后賦值,它會(huì)自動(dòng)判斷數(shù)據(jù)類型,不必在聲明的同時(shí)去定義變量的數(shù)據(jù)類型。 如果您將數(shù)字值賦值給變量,它將會(huì)自動(dòng)轉(zhuǎn)換為整數(shù)工作;如果您將字符串賦值給該變量,那么它將會(huì)轉(zhuǎn)換為字符串類型。

Bash 變量類型

Bash 變量有兩種類型:

1. 系統(tǒng)定義的變量 由 Linux 操作系統(tǒng)本身創(chuàng)建和維護(hù)的預(yù)定義變量。它們的命名標(biāo)準(zhǔn)通常是以大寫字母對(duì)變量進(jìn)行命名。

  • BASH 表示 Shell 名稱,示例:
    BASH=/user/bin/bash
  • BASH_VERSION 指定 Bash 持有的 shell 版本,示例:
    BASH_VERSION=4.2.46(2)
  • COLUMNS 指定編號(hào),屏幕的列數(shù),示例:
    COLUMNS=80
  • HOME 為用戶指定主目錄,示例:
    HOME=/home/W3Cschool
  • LOGNAME 指定日志記錄用戶名,示例:
    LOGNAME=W3Cschool

    若要了解更多的系統(tǒng)定義變量,您可以在終端輸入命令set,env,printenv以獲取這些變量的列表。

2. 用戶定義的變量 由用戶自行創(chuàng)建和維護(hù)的變量。這些類型的變量多數(shù)以小寫字母參與命名,但不具有大小寫強(qiáng)制性規(guī)定。

#!/bin/bash
say=Hello user
Comment=welcome to W3Cschool
echo "$say,$Comment!"

執(zhí)行結(jié)果:

Hello user,welcome to W3Cschool!

Bash 變量使用

我們通常對(duì) Bash 中的變量執(zhí)行兩個(gè)操作:

  • 為變量賦值
    comment=Welcome to W3Cschool
  • 讀取變量的值
    comment=Welcome to W3Cschool
    echo $comment

注意:如果通過單引號(hào)將變量或字符串進(jìn)行任意拼接組合,那么將無法成功讀取它們。

命令行參數(shù)

命令行參數(shù)通過將數(shù)據(jù)輸入傳遞給代碼功能塊,使腳本更具動(dòng)態(tài)性,如下示例:

./bash_script.sh parameter1 parameter2...

注:腳本名稱與所有傳遞的參數(shù)之間不能存在空格,本處使用空格便于閱讀。

如何使用命令行參數(shù)

在 Bash 中,命令行參數(shù)與以下默認(rèn)參數(shù)或特殊變量的引用一同使用。

  • $0 ——指定要調(diào)用的腳本名稱。
  • $1-9 ——存儲(chǔ)前9個(gè)自變量的名稱,或可用作自變量的位置。
  • $# ——指定傳遞給腳本的參數(shù)總數(shù)。
  • $* ——將所有命令行參數(shù)連接在一起來存儲(chǔ)它們。
  • $@ ——將參數(shù)列表存儲(chǔ)為數(shù)組。
  • $? ——指定最后一個(gè)命令或最近執(zhí)行過程的推出狀態(tài)。
  • $$ ——指定當(dāng)前腳本的進(jìn)程 ID 。
  • $! ——顯示最后一個(gè)后臺(tái)作業(yè)的 ID 。

傳遞命令行參數(shù)的兩種方法:

  1. 使用位置編號(hào) 使用默認(rèn)參數(shù)($1-9)來訪問命令行參數(shù)。
    #!/bin/bash
    echo $0 '> echo $0'
    echo $1 $2 $3 $4 $5 $6 $7 $8 $9'> echo $1 $2 $3 $4 $5 $6 $7 $8 $9'

    執(zhí)行結(jié)果:

    $ chmod +x bash_script.sh
    $ ./bash_script.sh Here is the W3Cschool
    ./bash_script.sh > echo $0
    Here is the W3Cschool >echo $1 $2 $3 $4 $5 $6 $7 $8 $9

  1. 使用數(shù)組 將參數(shù)作為數(shù)組傳遞,按照給定的算法來應(yīng)用此方法。
    • 聲明變量名,將值分配為$@。
      
      variable_name=("$@"
      ?```)
    • 通過指定數(shù)組索引來顯示參數(shù)的值。
      ${variable_name[i]}
    • 保存腳本,并通過傳遞參數(shù)來執(zhí)行腳本。
      #!/bin/bash
      parameter=("$@")
      echo ${parameter[0]} ${parameter[1]} ${parameter[2]}

命令替換

在 Bash 中,命令替換允許命令的輸出替換命令本身。 命令替換是指Bash執(zhí)行的擴(kuò)展,它獲取Bash命令的輸出,存儲(chǔ)在一個(gè)變量中并顯示回顯。 命令替換在腳本和變量分配方面增強(qiáng)了數(shù)據(jù)的靈活性。

語法:

  • 將命令替換為變量(命令替換的經(jīng)典形式)是使用反引號(hào),如下示例:
    variable_name=`command_name`
    variable_name=`command_name [option...] argument1 argument2...`
    variable_name=`/path/to/command`
  • $開頭,將命令放在圓括號(hào)內(nèi)進(jìn)行命令替換,如下示例:
    
    variable_name=$(command_name)
    variable_name=$(command_name [option...] argument1 argument2...)
    variable_name=$(path/to/command)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)