Bash 基礎知識系列 #2:在 Bash 中使用變量
在 Bash 基礎知識系列的第一部分中,我簡要提到了變量?,F(xiàn)在是時候在本章中詳細了解它們了。
如果你曾經(jīng)進行過任何類型的編碼,你一定熟悉術語“變量”。
如果沒有,請將變量視為保存信息的盒子,并且該信息可以隨著時間的推移而改變。
讓我們看看如何使用它們。
在 Bash shell 中使用變量
打開終端并使用一個隨機的數(shù)字 4 初始化變量:
var=4
現(xiàn)在你有一個名為 var
的變量,它的值為 4
。想驗證一下嗎? 通過在變量名前添加 $
來訪問變量的值。這稱為參數(shù)擴展。
[abhishek@itsfoss]:~$ echo The value of var is $var
The value of var is 4
?? 變量初始化時
=
前后不能有空格。
如果需要,你可以將該值更改為其他值:
Using variables in shell
在 Bash shell 中,變量可以是數(shù)字、字符或字符串(包括空格在內(nèi)的字符)。
Different variable types in Bash shell
?? 與 Linux 中的其他事物一樣,變量名稱也區(qū)分大小寫。它們可以由字母、數(shù)字和下劃線 “
_
” 組成。
在 Bash 腳本中使用變量
你是否注意到我沒有運行 shell 腳本來顯示變量示例? 你可以直接在 shell 中做很多事情.當你關閉終端時,你創(chuàng)建的那些變量將不再存在。
但是,你的發(fā)行版通常會添加全局變量,以便可以在所有腳本和 shell 中訪問它們。
讓我們再寫一些腳本.你應該之前創(chuàng)建了腳本目錄,但無論哪種情況,此命令都會處理該目錄:
mkdir -p bash_scripts && cd bash_scripts
基本上,如果 bash_scripts
目錄尚不存在,它將創(chuàng)建它,然后切換到該目錄。
這里讓我們使用以下文本創(chuàng)建一個名為 knock.sh
的新腳本。
#!/bin/bash
echo knock, knock
echo "Who's there?"
echo "It's me, $USER"
更改文件權限并運行腳本。你在上一章中已經(jīng)學到了。
這是它為我生成的內(nèi)容:
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"
現(xiàn)在你可以根據(jù)需要使用該變量。
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
的初始值,并且明天價格翻倍。
提示:使用 \
轉(zhuǎn)義特殊字符 $
。
練習的答案可以在社區(qū)的這個專用帖子中討論。
在 Bash 基礎知識系列的下一章中,你將了解如何通過傳遞參數(shù)和接受用戶輸入來使 bash 腳本具有交互性。