Bash 變量

2022-10-11 16:03 更新

變量的定義

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

Bash 變量聲明

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

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

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

Bash 變量類型

Bash 變量有兩種類型:

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

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

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

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

  1. #!/bin/bash
  2. say=Hello user
  3. Comment=welcome to W3Cschool
  4. echo "$say,$Comment!"

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

  1. Hello user,welcome to W3Cschool!

Bash 變量使用

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

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

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

命令行參數(shù)

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

  1. ./bash_script.sh parameter1 parameter2...

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

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

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

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

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

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

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

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

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

命令替換

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

語法:

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號