如何在 macOS 上執行 Shell 腳本 (.sh)

若要在 macOS 上執行shell 腳本,請開啟終端,進入包含該.sh檔案的資料夾,然後使用其解釋器執行它。例如,bash hello.sh`bash script -p bash` 可以執行一個 Bash 腳本,而無需更改其權限。如果要將其作為命令列運行,請使用 `--executable` 命令使其可執行chmod +x hello.sh,然後執行`bash script -p bash` ./hello.sh。這些方法適用於目前的 macOS 版本。

運行腳本前請檢查腳本內容。

shell 腳本是一個包含指令的純文字檔案。這些命令以您的使用者帳戶權限執行,因此腳本可以編輯或刪除檔案、安裝軟體或透過網路傳送資料。在執行腳本之前,請務必仔細閱讀,尤其是在腳本要求輸入管理員密碼或使用 `--admin` 參數的情況下sudo。僅運行來自您信任的來源的腳本;更改文件的權限並不能保證其內容安全。

蘋果公司將 shell 腳本描述為包含 UNIX 命令的文字文件,並解釋了 shebang 行如何選擇運行腳本的 shell。請參閱蘋果公司的終端 shell 腳本指南。

使用 Bash 運行 .sh 腳本

這是運行 Bash 腳本最簡單的方法。您無需事先新增執行權限。

  1. 建立或找到腳本。 shell腳本可以用任何純文字編輯器編寫。若要快速測試,請開啟文字編輯器 (TextEdit),選擇「格式」>「轉換為純文字」,然後輸入以下兩行程式碼:
#!/bin/bash
echo "Hello from macOS"

將文件另存為hello.sh.txt。在儲存對話方塊中,檢查檔案名稱是否以 .txt 結尾.sh,以及 TextEdit 是否新增了 .txt .txt。第一行是 shebang:它用於在腳本直接運行時指定 Bash 作為解釋器。第二行會列印一則簡短的訊息。

純文字模式的文字編輯器顯示了包含 Bash shebang 和 echo 指令的 hello.sh 檔案。
範例 hello.sh 檔案包含一個 shebang,後面跟著一個列印文字的指令。
  1. 打開終端並進入檔案所在的資料夾。按下 Command-空白鍵,輸入 Terminal,然後按下回車鍵。如果檔案儲存在「下載」資料夾中,請輸入:
cd ~/Downloads

每條指令後按回車鍵。您可以輸入ls命令列出檔案並確認檔案是否hello.sh存在。切換Downloads到您實際使用的資料夾。如果資料夾或檔案名稱包含空格,請將路徑用引號括起來,例如cd "$HOME/My Scripts"`.`

切換到下載資料夾後,終端機顯示 hello.sh 檔案。
使用 cd 開啟包含腳本的資料夾,然後使用 ls 檢查其名稱。
  1. 使用 Bash 運行腳本。在冒號 (:)後輸入腳本名稱bash。
bash hello.sh

終端應該顯示Hello from macOS。如果腳本使用 Zsh 語法而不是 Bash,請執行zsh hello.sh。終端機中互動開啟的 shell 通常是 Zsh,但這並不意味著每個腳本都應該用 Zsh 運行;請使用腳本編寫時所使用的解釋器。腳本的 shebang 行通常會指示該解釋器。

將腳本作為可執行檔運行。

您也可以透過腳本路徑直接啟動它。當您想像運行小型命令一樣運行腳本時,這非常有用。蘋果終端機中關於如何使檔案可執行的說明就使用了chmod這一步驟。

  1. 授予執行權限。在同一終端機視窗和資料夾中運行:
chmod +x hello.sh

這將為該文件新增執行權限。除非之後重置權限,否則此變更只需執行一次。請避免使用超出實際需求的權限設定;chmod +x對於您擁有的個人腳本而言,此權限設定已足夠。

終端機顯示已對 hello.sh 執行 chmod +x 操作。
chmod +x 指令將 hello.sh 標記為可執行檔。
  1. 從目前資料夾啟動。輸入:
./hello.sh

這./告訴 shell 在目前目錄下運行檔案。如果沒有這行程式碼,shell 通常會在 `/etc/shell/files` 指定的資料夾下搜索,PATH而不是在目前資料夾下搜尋。如果您目前位於其他位置,可以使用 ` cd--return to script` 指令返回到腳本所在的資料夾,或輸入腳本的完整路徑,例如 ` /etc/shell/files` ~/Downloads/hello.sh。

終端機運行 ./hello.sh 並顯示“Hello from macOS”
執行 ./hello.sh 會啟動可執行腳本並顯示其輸出。

常見錯誤及解決方法

  • 使用後出現「權限被拒絕」錯誤./hello.sh:請確認檔案名,然後執行chmod +x hello.sh。或者,bash hello.sh如果是 Bash 腳本且不需要直接執行,請使用其他方法。
  • 「沒有該檔案或目錄」:使用 `ls` 指令確認資料夾pwd,使用 `ls` 指令列出其內容ls,並檢查拼字和大小寫。確保該檔案實際上沒有被命名為 ` hello.sh.txt.`
  • 腳本中出現「指令未找到」錯誤:腳本可能依賴某個缺失或未安裝的工具PATH。在安裝任何工具之前,請先查看腳本文件。
  • 「錯誤的解釋器」或提示^M:第一行可能指向一個不可用的解釋器,或者檔案可能使用了 Windows 風格的換行符。請檢查 shebang 行,並使用 Unix (LF) 換行符號儲存檔案。

你應該使用哪一種方法?

如果您確定它是 Bash 腳本,可以使用bash hello.sh此方法快速運行。如果您想直接啟動腳本並讓其 shebang 選擇解釋器,請使用chmod +x hello.sh此./hello.sh方法。這兩種方法都不會安裝缺少的依賴項、修復不相容的命令或驗證腳本是否可信。

留下評論

如何在 Mac 上截圖:完整指南

如何在 Mac 上截圖:完整指南

學習如何在 Mac 上使用快捷鍵截圖(全螢幕、區域或視窗),以及截圖應用程式、剪貼簿、編輯和儲存位置技巧。

如何在 macOS 上向單一 PDF 檔案中新增多個影像

如何在 macOS 上向單一 PDF 檔案中新增多個影像

在 macOS 系統中,使用 Finder 或預覽程式將多張圖片合併成一個 PDF 檔案。無需額外軟體,即可控制頁面順序、避免裁切並修復缺失頁面。

如何在 macOS 上查看 FPS:Steam 和 Apple 的 Metal HUD

如何在 macOS 上查看 FPS:Steam 和 Apple 的 Metal HUD

了解如何在 Mac 上使用 Steam 的效能疊加層或 Apple 的 Metal Performance HUD 顯示 FPS,以及計數器不顯示時的解決方法。

如何在 Mac 上強制退出:關閉應用程式的 5 種快速方法

如何在 Mac 上強制退出:關閉應用程式的 5 種快速方法

使用 Option–Command–Esc 強制退出無回應的 Mac 應用程序,或從 Apple 選單、Dock、活動監視器或終端將其關閉。

如何在 Mac 上使用分割畫面功能:將兩個應用程式並排顯示

如何在 Mac 上使用分割畫面功能:將兩個應用程式並排顯示

設定分割畫面檢視、調整窗格大小或取代窗格、使用排程中心,並了解桌面視窗平鋪何時更適合您的 Mac。

如何在 macOS 上從照片中刪除 EXIF 數據

如何在 macOS 上從照片中刪除 EXIF 數據

了解如何從 macOS 上的照片中刪除 EXIF 資料、在「照片」中隱藏位置、使用 ExifTool 清理匯出的 JPEG 副本,並驗證結果。

如何在Mac上安全同步兩個資料夾

如何在Mac上安全同步兩個資料夾

使用 SyncTwoFolders 在 Mac 上同步兩個資料夾,選擇單向或雙向更新,並在檔案被取代或刪除之前預覽變更。

如何在Mac上備份Tumblr博客

如何在Mac上備份Tumblr博客

使用 Tumblr 的網頁匯出功能,在 Mac 上備份 Tumblr 部落格。下載並解壓縮 ZIP 文件,即可安全保存部落格文章和媒體文件,並了解備份文件中遺漏了哪些內容。

如何在 Mac 桌面上使用 Google 地圖

如何在 Mac 桌面上使用 Google 地圖

在 macOS Sonoma 14 或更高版本中,您可以在 Mac 上的 Safari 或 Chrome 瀏覽器中使用 Google 地圖,尋找地點和路線,切換地圖圖層,並將 Safari 網路應用程式新增至 Dock 欄。

適用於 Windows 和 macOS 的 5 款最佳免費 WAV 轉 MP3 轉換器

適用於 Windows 和 macOS 的 5 款最佳免費 WAV 轉 MP3 轉換器

比較五款適用於 Windows 和 macOS 的免費 WAV 轉 MP3 轉換器,包括線上檔案限制、本機批次工具和實用匯出設定。