Linux中國

Bash 基礎知識系列 #2:在 Bash 中使用變數

在本章的 Bash 基礎知識系列中,學習在 Bash 腳本中使用變數。

在 Bash 基礎知識系列的第一部分中,我簡要提到了變數。現在是時候在本章中詳細了解它們了。

如果你曾經進行過任何類型的編碼,你一定熟悉術語「變數」。

如果沒有,請將變數視為保存信息的盒子,並且該信息可以隨著時間的推移而改變。

讓我們看看如何使用它們。

在 Bash shell 中使用變數

打開終端並使用一個隨機的數字 4 初始化變數:

var=4

現在你有一個名為 var 的變數,它的值為 4。想驗證一下嗎? 通過在變數名前添加 $ 來訪問變數的值。這稱為參數擴展。

[abhishek@itsfoss]:~$ echo The value of var is $var
The value of var is 4

? 變數初始化時 = 前後不能有空格。

如果需要,你可以將該值更改為其他值:

Using variables in shell

在 Bash shell 中,變數可以是數字、字元或字元串(包括空格在內的字元)。

Different variable types in Bash shell

? 與 Linux 中的其他事物一樣,變數名稱也區分大小寫。它們可以由字母、數字和下劃線 「_」 組成。

在 Bash 腳本中使用變數

你是否注意到我沒有運行 shell 腳本來顯示變數示例? 你可以直接在 shell 中做很多事情.當你關閉終端時,你創建的那些變數將不再存在。

但是,你的發行版通常會添加全局變數,以便可以在所有腳本和 shell 中訪問它們。

讓我們再寫一些腳本.你應該之前創建了腳本目錄,但無論哪種情況,此命令都會處理該目錄:

mkdir -p bash_scripts && cd bash_scripts

基本上,如果 bash_scripts 目錄尚不存在,它將創建它,然後切換到該目錄。

這裡讓我們使用以下文本創建一個名為 knock.sh 的新腳本。

#!/bin/bash

echo knock, knock
echo "Who's there?"
echo "It's me, $USER"

更改文件許可權並運行腳本。你在上一章中已經學到了。

這是它為我生成的內容:

Using global variable in Bahs script

你是否注意到它如何自動將我的名字添加到其中? 這就是包含用戶名的全局變數 $USER 的魔力。

你可能還注意到,我有時將 "echo 一起使用,但其他時候則不使用。這是故意的。bash 中的引號 有特殊含義。它們可用於處理空格和其他特殊字元。讓我展示一個例子。

處理變數中的空格

假設你必須使用一個名為 greetings 的變數,其值為 hello and welcome

如果你嘗試像這樣初始化變數:

greetings=Hello and Welcome

你會得到這樣的錯誤:

Command 'and' not found, but can be installed with:
sudo apt install and

這就是為什麼你需要使用單引號或雙引號:

greetings="Hello and Welcome"

現在你可以根據需要使用該變數。

Using spaces in variable names in bash

將命令輸出分配給變數

是的!你可以將命令的輸出存儲在變數中並在腳本中使用它們。這稱為命令替換。

var=$(command)

這是一個例子:

[abhishek@itsfoss]:~$ today=$(date +%D)
[abhishek@itsfoss]:~$ echo "Today's date is $today"
Today's date is 06/19/23
[abhishek@itsfoss]:~$

Command substitution in bash

舊語法使用反引號而不是 $() 進行命令替換。雖然它可能仍然有效,但你應該使用新的推薦符號。

? 變數會更改值,除非你聲明一個「常量」變數,如下所示:readonly pi=3.14。在這種情況下,變數 pi 的值無法更改,因為它被聲明為 readlonly

?️ 練習時間

是時候練習你所學到的東西了。這裡有一些練習來測試你的學習情況。

練習 1:編寫一個 bash 腳本,以以下格式列印你的用戶名、當前工作目錄、主目錄和默認 shell。

Hello, there
My name is XYZ
My current location is XYZ
My home directory is XYZ
My default shell is XYZ

提示:使用全局變數 $USER$PWD$HOME$SHELL

練習 2: 編寫一個 bash 腳本,聲明一個名為 price 的變數.使用它來獲取以下格式的輸出:

Today's price is $X
Tomorrow's price is $Y

其中 X 是變數 price 的初始值,並且明天價格翻倍。

提示:使用 轉義特殊字元 $

練習的答案可以在社區的這個專用帖子中討論。

在 Bash 基礎知識系列的下一章中,你將了解如何通過傳遞參數和接受用戶輸入來使 bash 腳本具有交互性。

(題圖:MJ/37c5c26e-3289-4ebd-b8ae-88eb8a3b2eb1)

via: https://itsfoss.com/bash-use-variables/

作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國