————前言————
變數是程式設計中的基本概念,也是Shell指令碼中不可或缺的組成部分。**透過使用變數,你可以儲存和運算元據,從而編寫更靈活和動態的指令碼。**無論是簡單的字串、數字,還是複雜的數據結構,變數都能幫助你更有效地管理資訊。在本篇指南中,我們將詳細講解Shell中的變數型別、定義方法、使用技巧以及常見的變數操作,幫助你熟練掌握變數的使用,讓你的Shell指令碼更加高效和強大。讓我們一同深入學習Shell中的變數世界吧!
各種 Shell 環境中都使用到了“變數”的概念。Shel 變數用來存放系統和使用者需要使用的特定引數(值),而且這些引數可以根據使用者的設定或系統環境的變化而相應變化。透過使用變數,Shel程式能夠提供更加靈活的功能,適應性更強。 常見 She!l 變數的型別包括自定義變數、環境變數、位置變數、預定義變數。
1 自定義變數
自定義變數是由系統使用者自己定義的變數,只在使用者自己的Shel環境中有效,因此又稱為本地變數。在編寫 Shel 指令碼程式時,通常會設定一些特定的自定義變數,以適應程式執行過程中的各種變化,滿足不同的需要。
🫠1.定義新的變數
Bash 中的變數操作相對比較簡單,不像其他高階程式語言(如 C/C++、Java 等)那麼複雜在定義一個新的變數時,一般不需要提前進行宣告,而是直接指定變數名稱並賦給初始值(內容即可。
定義變數的基本格式為“變數名=變數值”,等號兩邊沒有空格。變數名稱需以字母或下劃線開頭,名稱中不要包含特殊字元(如+、-、*、/、、?.%、&、#等)。例如,若要定義一個名為name的變數(值為 Python)和一個名為“Version”的變數(值為 2.7.13),可以執行以下操作。
[root@localhost ~] name=python[root@localhost ~] version=2.7.13
🏖️2.檢視和引用變數的值
透過在變數名稱前新增前導符號“S”,可以引用一個變數的值。使用 echo 命令可以檢視變數可以在一條 echo 命令中同時檢視多個變數值,
[root@localhost ~] echo $namepython[root@localhost ~] echo $version2.7.13
當變數名稱容易和緊跟其後的其他字元相混淆時,需要新增大括號“(}”將其括起來,否則將無法確定正確的變數名稱。對於未定義的變數,將顯示為空值。
[root@localhost ~] echo $name666[root@localhost ~] echo ${name}666python666
🗻3.變數賦值的特殊操作
在等號“=”後邊直接指定變數內容是為[變數賦值]的最基本方法,除此之外,還有一些特殊的賦值操作,可以更靈活地為變數賦值,以便適用於各種複雜的管理任務。
1.雙引號(" ")
雙引號主要起界定字串的作用,特別是當要賦值的內容中包含空格時,必須以雙引號括起來其他情況下雙引號通常可以省略。
[root@localhost ~] name=python 2.56 //錯誤的-bash: 2.56: 未找到命令 [root@localhost ~] name="python 2.56" //正確的[root@localhost ~] echo $namepython 2.56
在雙引號範圍內,使用“$”符號可以引用其他變數的值(變數引用),從而能夠直接呼叫現有變數的值來賦給新的變數。例如,執行以下操作可以呼叫變數Version 的值,將其賦給一個新的變數java,最終的值為“java7.7"。
在雙引號範圍內,使用“$”符號可以引用其他變數的值(變數引用),從而能夠直接呼叫現有變數的值來賦給新的變數。例如,執行以下操作可以呼叫變數Version 的值,將其賦給一個新的變數java,最終的值為“java7.7"。
2.單引號(' ')
當要賦值的內容中包含$、\等具有特殊含義的字元時,應使用單引號括起來。在單引號的範圍內,將無法引用其他變數的值,任何字元均作為普通字元看待。但賦值內容中包含單引號()時需使用\”符號進行轉義,以免衝突。
[root@localhost ~] Version=7.7 [root@localhost ~] java='java $Version' [root@localhost ~] echo $javajava $Version
3.反撇號(``)
**反撒號主要用於命令替換,允許將執行某個命令的螢幕輸出結果賦值給變數。**反撇號括起來的範圍內必須是能夠執行的命令列,否則將會出錯。例如,若要在一行命令中查詢useradd 命令程式的位置並列出其詳細屬性,可以執行以下操作。
[root@localhost ~] grep=`grep "root" /etc/passwd ` [root@localhost ~] echo $greproot:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
🧱4.read 命令
Shell 中的 read
命令 用於從標準輸入讀取資料並將其儲存在變數中。它是一種在 shell 指令碼和互動式 shell 中獲取使用者輸入的常用方法。
基本用法
read [選項] 變數名
變數名
是要將讀取到的資料儲存到的變數。選項用於指定
read
命令的行為。
常見選項
-p 提示符
:在讀取輸入之前顯示提示符。-n N
:讀取 N 個字元後結束。-t 秒數
:等待輸入的超時時間(以秒為單位)。-s
:隱藏輸入內容。
[root@localhost ~] read hi你好 [root@localhost ~] echo $hi你好
**爲了使互動式操作的介面更加友好,提高易用性,read 命令可以結合“-p”選項來設定提示資訊,**以便告知使用者應該輸入什麼內容等相關事項。例如,若希望提示使用者輸入備份檔案的存放目錄並將輸入的路徑資訊賦值給變數 dir 可以執行以下操作。
[root@localhost ~] read -p "請輸入你想要放置的目錄:" dir請輸入你想要放置的目錄:/root [root@localhost ~] echo $dir/root