Hello World

互動殼牌

Bash shell 通常以互動方式使用 它允許你輸入和編輯命令,然後在按下 Return 鍵時執行它們。許多基於 Unix 和類 Unix 作業系統使用 Bash 作為其預設 shell(特別是 Linux 和 macOS)。終端在啟動時自動進入互動式 Bash shell 程序。

輸入以下內容輸出 Hello World

echo "Hello World"
#> Hello World  # Output Example

筆記

  • 你只需在終端中鍵入 shell 的名稱即可更改 shell。例如:shbash

  • echo 是一個 Bash 內建命令,它將接收的引數寫入標準輸出。預設情況下,它會在輸出中附加換行符。

非互動式外殼

Bash shell 也可以從指令碼非互動式執行,使 shell 不需要人工互動。互動行為和指令碼行為應該是相同的 - 這是 Unix V7 Bourne shell 和傳遞 Bash 的重要設計考慮因素。因此,可以在命令列中執行的任何操作都可以放在指令碼檔案中以供重用。

請按照以下步驟建立 Hello World 指令碼:

  1. 建立一個名為 hello-world.sh 的新檔案

    touch hello-world.sh
    
  2. 通過執行 chmod +x hello-world.sh 使指令碼可執行

  3. 新增此程式碼:

    #!/bin/bash
    echo "Hello World"
    

    第 1 行:指令碼的第一行必須以字元序列 #! 開頭,稱為 shebang 1 。shebang 指示作業系統執行/bin/bash,即 Bash shell,將指令碼的路徑作為引數傳遞給它。

    例如/bin/bash hello-world.sh

    第 2 行 :使用 echo 命令將 Hello World 寫入標準輸出。

  4. 使用以下方法之一從命令列執行 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 目錄中,這樣無論你有什麼當前工作目錄,就像 catls 這樣的系統命令。

常見錯誤包括:

  1. 忘記對檔案應用執行許可權,即 chmod +x hello-world.sh,導致 ./hello-world.sh: Permission denied 的輸出。

  2. 在 Windows 上編輯指令碼,這會產生 Bash 無法處理的錯誤行結束字元。

    一個常見的症狀是: command not found,其中回車已將游標強制到行的開頭,覆蓋錯誤訊息中冒號前的文字。

    可以使用 dos2unix 程式修復指令碼。

    一個使用示例:dos2unix hello-world.sh

    dos2unix 內聯編輯檔案。

  3. 使用 sh ./hello-world.sh,沒有意識到 bashsh 是具有不同特徵的不同殼(儘管由於 Bash 向後相容,相反的錯誤是無害的)。

    無論如何,僅僅依靠指令碼的 shebang 線比在每個指令碼的檔名之前明確地寫 bashsh(或 pythonperlawkruby 或……)更為可取。

    為了使指令碼更具可移植性而使用的常見 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。