1. 程式人生 > 其它 >如何在 Linux 中建立並執行 Shell 指令碼(Bash 初學者教程)

如何在 Linux 中建立並執行 Shell 指令碼(Bash 初學者教程)

1、建立並執行第一個 shell 指令碼
2、將 shell 指令碼轉換為 bash 指令碼
3、為什麼大多數 shell 指令碼都包含 #! /bin/bash 在 shell 指令碼的開頭?
4、將 shell 指令碼新增到 PATH(以便它可以從任何目錄執行)
1、建立並執行第一個 shell 指令碼
首先建立一個名為 scripts 的新目錄,它將託管我們所有的 bash 指令碼。

mkdir scripts
cd scripts
1
2
現在在這個“指令碼目錄”中,使用 cat 命令建立一個名為 hello.sh的新檔案:

cat > hello.sh
1
通過在終端中鍵入以下內容,在其中插入以下行:

echo 'Hello, World!'
1
按 Ctrl+D 將文字儲存到檔案中,同時從 cat 命令中出來。

你還可以使用基於終端的文字編輯器,如 Vim、Emacs或 Nano。如果你使用的是桌面 Linux,還可以使用圖形文字編輯器(如 Gedit)將文字新增到此檔案中。

基本上你是在使用echo 命令來列印“Hello World”。你可以直接在終端中使用此命令,但在本測試中,你將通過 shell 指令碼執行此命令。

現在使用 chmod 命令使檔案 hello.sh 可執行,如下所示:

chmod u+x hello.sh
1
最後,通過在 hello.sh 前面加上“bash”來執行你的第一個 shell 指令碼:

bash hello.sh
1
你就會看到Hello, World!列印在螢幕上。

這是在上面看到的所有步驟的螢幕截圖:

2、將 shell 指令碼轉換為 bash 指令碼
Bash是“Bourne-Again shell”的縮寫,它只是 Linux 中許多可用 shell 的一種。

shell 是一個命令列直譯器,它接受並執行命令。如果你以前執行過任何 Linux 命令,那麼你已經使用過 shell。當你在 Linux 中開啟終端時,你已經在執行系統的預設 shell。

Bash 通常是大多數 Linux 發行版中的預設 shell。這就是為什麼 bash 通常是 shell 的同義詞。Shell 只是一個程式,而 bash 是它的一個實現。還有其他這樣的 shell 程式,如 ksh、zsh等。如果你安裝了其他 shell,你也可以使用它來代替 bash。

shell 指令碼通常具有幾乎相同的語法,但有時也會有所不同。例如,陣列索引在 Zsh 中從 1 開始,而不是在 bash 中從 0 開始。如果為Zsh shell編寫的指令碼有陣列,則它在 bash 中將無法正常工作。

為了避免這種錯誤,你應該告訴直譯器你的 shell 指令碼是為 bash shell 編寫的。你是怎樣做的?你可以用shebang來實現這一點。

3、為什麼大多數 shell 指令碼都包含 #! /bin/bash 在 shell 指令碼的開頭?
“#!/bin/bash”這一行被稱為shebang 行,在某些文獻中,它被稱為hashbang 行,這是因為它以兩個字元hash '#' 和bang '!' 開頭。

#! /bin/bash

echo 'Hello, World!'
1
2
3
當你在指令碼的最頂部包含“#!/bin/bash”行時,系統知道你想使用 bash 作為指令碼的直譯器。因此,你現在可以直接執行 hello.sh 指令碼,而無需在其前面加上 bash。

使用 #!/bin/bash 表示該指令碼是 bash shell 指令碼,無論系統上正在使用什麼 shell,都應該使用 bash 作為直譯器執行。如果你使用的是 zsh 特定的語法,你可以通過新增 #! /bin/zsh 作為指令碼的第一行。

#! 和 /bin/bash 之間的空格無關緊要。你也可以使用 #!/bin/bash。

4、將 shell 指令碼新增到 PATH(以便它可以從任何目錄執行)
前面使用 ./hello.sh 來執行指令碼;如果省略前導 ./

Bash 認為你正在嘗試執行名為 hello.sh 的命令。當你在終端上執行任何命令時,shell 就在儲存在 PATH 變數中的一組目錄中查詢該命令。

可以使用 echo 檢視該 PATH 變數的內容:echo $PATH

冒號字元 (:) 分隔每次執行命令時 shell 掃描的每個目錄的路徑。

像 echo、cat 等 Linux 命令可以從任何地方執行,因為它們的可執行檔案儲存在 bin 目錄中。bin 目錄包含在 PATH 中。當你執行命令時,系統會檢查 PATH 以查詢它應該尋找的所有可能位置,以找到該命令的可執行檔案。

如果你想從任何地方執行你的 bash 指令碼,就像它是一個常規的 Linux 命令,需要將你的 shell 指令碼的位置新增到 PATH 變數中。

首先,獲取指令碼目錄的位置(假設在同一目錄中),使用 PWD 命令:

pwd
1
使用 export 命令將指令碼目錄新增到 PATH 變數。

export PATH=$PATH:/home/ay2021/scripts
1
執行 hello.sh:


————————————————
版權宣告:本文為CSDN博主「BugMiaowu2021」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/m0_46278037/article/details/120457468