Hello World
互動殼牌
Bash shell 通常以互動方式使用 : 它允許你輸入和編輯命令,然後在按下 Return 鍵時執行它們。許多基於 Unix 和類 Unix 作業系統使用 Bash 作為其預設 shell(特別是 Linux 和 macOS)。終端在啟動時自動進入互動式 Bash shell 程序。
輸入以下內容輸出 Hello World
:
echo "Hello World"
#> Hello World # Output Example
筆記
-
你只需在終端中鍵入 shell 的名稱即可更改 shell。例如:
sh
,bash
等 -
echo
是一個 Bash 內建命令,它將接收的引數寫入標準輸出。預設情況下,它會在輸出中附加換行符。
非互動式外殼
Bash shell 也可以從指令碼非互動式執行,使 shell 不需要人工互動。互動行為和指令碼行為應該是相同的 - 這是 Unix V7 Bourne shell 和傳遞 Bash 的重要設計考慮因素。因此,可以在命令列中執行的任何操作都可以放在指令碼檔案中以供重用。
請按照以下步驟建立 Hello World
指令碼:
-
建立一個名為
hello-world.sh
的新檔案touch hello-world.sh
-
通過執行
chmod
+x hello-world.sh
使指令碼可執行 -
新增此程式碼:
#!/bin/bash echo "Hello World"
第 1 行:指令碼的第一行必須以字元序列
#!
開頭,稱為 shebang 1 。shebang 指示作業系統執行/bin/bash
,即 Bash shell,將指令碼的路徑作為引數傳遞給它。例如
/bin/bash hello-world.sh
第 2 行 :使用
echo
命令將Hello World
寫入標準輸出。 -
使用以下方法之一從命令列執行
hello-world.sh
指令碼:./hello-world.sh
- 最常用,推薦/bin/bash hello-world.sh
bash hello-world.sh
- 假設/bin
在你的$PATH
sh hello-world.sh
對於真正的生產用途,你會省略 .sh
擴充套件(這是誤導,因為這是一個 Bash 指令碼,而不是 sh
指令碼)並且可能將檔案移動到你的 PATH
目錄中,這樣無論你有什麼當前工作目錄,就像 cat
或 ls
這樣的系統命令。
常見錯誤包括:
-
忘記對檔案應用執行許可權,即
chmod +x hello-world.sh
,導致./hello-world.sh: Permission denied
的輸出。 -
在 Windows 上編輯指令碼,這會產生 Bash 無法處理的錯誤行結束字元。
一個常見的症狀是
: command not found
,其中回車已將游標強制到行的開頭,覆蓋錯誤訊息中冒號前的文字。可以使用
dos2unix
程式修復指令碼。一個使用示例:
dos2unix hello-world.sh
dos2unix
內聯編輯檔案。 -
使用
sh ./hello-world.sh
,沒有意識到bash
和sh
是具有不同特徵的不同殼(儘管由於 Bash 向後相容,相反的錯誤是無害的)。無論如何,僅僅依靠指令碼的 shebang 線比在每個指令碼的檔名之前明確地寫
bash
或sh
(或python
或perl
或awk
或ruby
或……)更為可取。為了使指令碼更具可移植性而使用的常見 shebang 行是使用
#!/usr/bin/env bash
而不是硬編碼 Bash 的路徑。這樣,/usr/bin/env
必須存在,但除此之外,bash
只需要在你的節目 44 上。在許多系統中,/bin/bash
不存在,你應該使用/usr/local/bin/bash
或其他一些絕對路徑; 這種變化避免了弄清楚細節。
1 也稱為 sha-bang,hashbang,pound-bang,hash-pling。