在 Shell 腳本教程系列的這篇文章中,您將學習如何在 shell 腳本中創建和使用變量。描述系統為 Bourne Shell 提供的各種變量以及如何創建自定義變量以在整個 shell 腳本中使用。

shell腳本中的變量用於存儲需要在整個腳本中頻繁使用的值。這些變量可以通過用戶輸入、shell 參數進行設置,也可以直接嵌入到 shell 中。除了腳本的用途和用戶認為它將如何使用之外,使用這些選項中的任何一個都沒有固定的理由。

什麼是 shell 腳本變量?

如果您熟悉編程語言,您可能以前接觸過或使用過變量。與其他語言中的變量一樣,shell 腳本中的變量用於存儲數據以供以後使用的相同目的。

與類型化語言相比,shell 腳本變量觀察到的一個區別是在設置變量的類型時不需要聲明它們。系統會自動理解所使用的變量類型。

如何在 shell 腳本中使用變量?

讓我們從基礎開始。如何設置變量?這很容易。使用賦值運算符 “= =“與幾乎所有編程語言一樣,為變量賦值。

為變量賦值

一個嘗試為不帶空格的變量賦值,另一個嘗試為帶空格的變量賦值。..讓我們看看輸出。

[email protected]:~# name=HowLinux
[email protected]:~# name = HowLinux
Shell 腳本變量

如您所見,我收到第二個錯誤。因此,您不能在變量賦值中包含空格。 到目前為止,我們已經從許多教程中知道 Linux 是一個區分大小寫的操作系統。因此,在上述情況下,變量 姓名 錯誤的 姓名..

輸出變量值

現在為變量分配了一個值 姓名 在上面的例子中,是時候使用它了。 使用 echo 命令輸出變量。但是如何告訴 echo 命令打印變量的值,而不僅僅是在變量後面鍵入的內容?我們將使用 $ 使用時表示變量的符號。

讓我們看看當我們回顯一個沒有 $ 符號的變量名時會發生什麼。

[email protected]:~# echo name
name
[email protected]:~# echo $name
HowLinux
回顯變量名

將用戶輸入讀入變量

要將用戶輸入讀入變量,請使用: 該命令後跟不帶 $ 符號的變量名。

[email protected]:~# read name
HowLinux User Input
[email protected]:~# echo $name
HowLinux User Input
讀取 shell 腳本中的變量讀取 shell 腳本中的變量

保存並運行 shell 腳本文件

在繼續接受 shell 參數之前,將 shell 腳本保存到 shell 文件中。可以使用傳遞的參數運行 Shell 腳本。

shell腳本的文件擴展名是 .sh 顯然,它代表“外殼”。讓我們在一個文件中運行上面測試的腳本。

#!/bin/bash
echo What is your name?
read name
echo Hello from HowLinux, $name. 

將上面的腳本保存如下 輸入.sh..我們將使用 Linux chmod 命令 使 shell 腳本可執行。這是可選的,因為您還可以通過鍵入以下內容來運行腳本: bash input.sh..

[email protected]:~# chmod +x input.sh

腳本現在可以在沒有 bash 命令的情況下運行,並且可以通過添加它們來運行。 ./ 首先如下圖。

[email protected]:~# ./input.sh
What is your name?
Ninad
Hello from HowLinux, Ninad.
[email protected]:~#

非常!現在您知道如何保存和運行腳本了。讓我們開始了解一些系統變量以及如何接受從終端傳遞給腳本的參數。

接受 shell 腳本中的參數

現在的問題甚至是我們 輸入.sh 該腳本已經可以接受參數。問題不僅在於接受,還在於使用傳遞的參數。現在讓我們看看如何使用運行腳本時傳遞的參數。

由於 input.sh 無法顯示參數的用法,因此首先創建一個新腳本,然後返回 input.sh 並將其更改為接受名稱作為參數。

#/bin/bash
echo The script was called by using $0
echo First argument, $1
echo Second argument, $2
echo Third argument, $3
echo All arguments can be printed with [email protected]

保存上面的腳本 參數.sh 再次運行 chmod +x argument.sh 該命令使腳本可執行。

[email protected]:~# ./argument.sh
The script was called by using ./argument.sh
First argument,
Second argument,
Third argument,
echo All arguments can be printed with

你可能已經註意到 $ 0 系統變量指示腳本的調用方式。在這種情況下,您所要做的就是運行腳本並調用它。如果指定了整個路徑,您將獲得包含整個路徑的輸出。這個 [email protected] 將所有參數保存在一起。

但是,這裡沒有傳遞任何參數。讓我們看看當我們傳遞一些參數時會發生什麼。

參數外殼腳本參數外殼腳本

練習:修改 input.sh 腳本以接受名稱作為參數而不是用戶輸入..

shell 腳本中的特殊變量

在上面的文章中,我們看到了一些可以用來訪問傳遞給腳本的參數的特殊變量。讓我們看一下可以在腳本中使用的一些特殊變量。

  • $$$$ – 在後台運行時提供 shell 腳本的進程 ID。這在編寫可以並行運行多次的腳本時特別有用。
  • $ * – 這就是為什麼 [email protected] 從功能上講,它似乎能夠存儲和輸出所有傳遞的參數。
  • $ # – 獲取傳遞給腳本的變量數量
  • 國際金融服務協會 – 此變量表示內部字段分隔符。它的作用是自動使用空格、製表符或換行符作為腳本輸入的分隔符。如果將此變量更改為腳本中的另一個分隔符,則腳本會使用該字符作為分隔符來拆分輸入。

結論是

這是一個shell腳本系列教程,我們會繼續寫更多關於Linux上shell腳本的文章。我希望您了解 shell 腳本中的變量是如何工作的,並且您也可以使用它們。記住你可以在終端中做什麼,你可以用 shell 腳本做什麼,等等。因此,您可以將在上一教程中學到的所有命令與變量結合起來,以自動執行一些例行任務。告訴我們你想出了什麼!