• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Bash 程式設計教學與範例:出錯時停止執行、顯示錯誤訊息

介紹如何讓 Bash 指令稿在出現執行錯誤時立即停止,並顯示相關的錯誤訊息。

以傳回值判斷是否執行成功

在 Bash 中執行指令之後,可以透過 $? 這個特殊變數來取得前一個執行指令的傳回值,而我們可以透過這個數值來判斷前一個指令是否有執行成功。

#!/bin/bash
# 錯誤的指令
ls --wrong-opt

# 判斷前一個指令是否執行成功
if [ $? -eq 0 ]; then
  echo "執行成功"
  exit 0
else
  echo "執行失敗" >&2 # 輸出至標準錯誤
  exit 1
fi

執行後的輸出會像這樣:

ls: unrecognized option '--wrong-opt'
Try 'ls --help' for more information.
執行失敗

如果我們只是要輸出簡單的訊息,也可以改用比較簡潔的寫法:

#!/bin/bash
# 錯誤的指令
ls --wrong-opt

# 判斷前一個指令是否執行成功
[ $? -eq 0 ] && echo "執行成功" || echo "執行失敗" >&2

如果只是需要自訂出現錯誤時的傳回值,可以這樣寫:

#!/bin/bash
# 錯誤的指令
ls --wrong-opt

# 自訂錯誤傳回值
[ $? -eq 0 ]  || exit 1

出錯自動停止執行

在執行 Bash 指令稿的時候,在一開始以 set 設定 -e 選項,就可以讓指令稿在出現任何錯誤時(執行指令傳回非 0 的值),自動停止執行。

#!/bin/bash
# 遇到任何錯誤則停止執行
set -e

# 錯誤的指令
ls --wrong-opt

# 後續的指令
echo "Hello, world."

執行後的輸出為:

ls: unrecognized option '--wrong-opt'
Try 'ls --help' for more information.

在這一段指令稿中,由於一開始以 set 設定了 -e 選項,因此在遇到 ls 執行錯誤時,指令稿就會停止執行,後續的 echo 指令也就不會被執行。

參考資料:intoli、nixCraft

分類:Linux 標籤:Bash

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • Linux 檢查、測試 CPU AES-NI 硬體加速加密指令集教學
  • CentOS Linux 7.9 自行編譯、安裝 OpenSSH 9.0p1 伺服器教學與範例
  • Python 使用 zipfile 模組壓縮、解壓縮 ZIP 檔案教學與範例
  • Python 以 LINE Notify 自動傳送即時訊息、圖片教學與範例
  • Linux 使用 Prometheus 與 Grafana 監控伺服器狀態、發送告警 Email 簡訊教學與範例
  • Linux 設定 pam_tty_audit 記錄 SSH 使用者操作指令教學與範例
  • Linux 封鎖、解鎖登入失敗次數過多的帳號 pam_faillock 教學與範例
  • Python 使用 pytube 自動下載 YouTube 影片教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide