Shell Script 基礎入門 - 使用 dialog
建立互動式對話框
dialog
是一個在 Linux Shell Script 中用來建立 圖形化對話框(TUI - Text User Interface) 的工具。透過 dialog
,我們可以建立 選單、輸入框、確認框、進度條 等互動式介面,提升 Shell 腳本的可讀性與使用者體驗。
本指南將介紹如何在 Fedora 上安裝 dialog
,並撰寫簡單的 Shell 腳本 來實作互動式對話框。
目錄
安裝 dialog
在 Fedora 上,安裝 dialog
工具:
sudo dnf install -y dialog
安裝完成後,可以測試 dialog
是否可用:
dialog --msgbox "Hello, Dialog!" 10 30
若成功顯示 彈出訊息框,代表安裝成功。
基本語法與範例
dialog
的基本語法如下:
dialog --[對話框類型] "訊息內容" 高度 寬度
範例如下:
dialog --msgbox "這是一個測試訊息框!" 10 40
這將彈出一個 10 行高、40 行寬 的訊息框,按 Enter 可關閉。
建立互動式選單
選單可以讓使用者選擇不同選項,並根據選擇執行不同指令。
#!/bin/bash
dialog --menu "請選擇一個選項:" 15 50 3 1 "顯示日期" 2 "顯示系統資訊" 3 "退出" 2>menu_choice.txt
choice=$(cat menu_choice.txt)
case $choice in
1) date ;;
2) uname -a ;;
3) echo "退出程式" ;;
*) echo "無效選擇" ;;
esac
rm -f menu_choice.txt
📌 說明:
--menu "標題" 高度 寬度 選項數量
定義選單介面。2>menu_choice.txt
將選擇結果儲存到menu_choice.txt
。case
語句根據使用者的選擇執行相應指令。
執行:
chmod +x menu.sh
./menu.sh
建立輸入框
輸入框可讓使用者輸入文字,例如輸入使用者名稱。
#!/bin/bash
dialog --inputbox "請輸入您的姓名:" 10 40 2>name.txt
name=$(cat name.txt)
echo "您好,$name!"
rm -f name.txt
建立確認框
確認框讓使用者選擇 Yes / No,例如詢問是否繼續執行腳本。
#!/bin/bash
dialog --yesno "您確定要繼續執行嗎?" 10 40
if [ $? -eq 0 ]; then
echo "使用者選擇了 YES"
else
echo "使用者選擇了 NO"
fi
📌 說明:
$?
變數存放dialog
的回傳值。0
代表 Yes,1
代表 No。
建立進度條
dialog
也可以顯示進度條,例如模擬程式運行過程。
#!/bin/bash
(
for i in {1..100}; do
echo $i
sleep 0.1
done
) | dialog --gauge "正在處理..." 10 50 0
📌 說明:
--gauge "訊息" 高度 寬度 初始值
顯示進度條。echo $i
將數值輸出至進度條。sleep 0.1
模擬處理時間。
綜合範例 - 互動式 Shell 選單
以下是一個完整的 互動式 Shell 腳本,使用 dialog
建立選單,讓使用者執行不同的系統指令。
#!/bin/bash
while true; do
dialog --menu "選擇要執行的操作:" 15 50 4 1 "顯示當前時間" 2 "檢查磁碟使用情況" 3 "顯示登入使用者" 4 "退出" 2>choice.txt
choice=$(cat choice.txt)
rm -f choice.txt
case $choice in
1) date | dialog --msgbox "$(cat)" 10 50 ;;
2) df -h | dialog --msgbox "$(cat)" 15 70 ;;
3) who | dialog --msgbox "$(cat)" 10 50 ;;
4) clear; exit 0 ;;
*) dialog --msgbox "無效選擇,請重新選擇!" 10 40 ;;
esac
done
📌 如何使用?
- 建立腳本:
nano dialog_menu.sh
- 貼上程式碼,儲存後執行:
chmod +x dialog_menu.sh
./dialog_menu.sh
這個腳本允許使用者透過 TUI 選單 執行不同的 Linux 指令,例如查看時間、檢查磁碟、顯示使用者,最後可選擇退出。
結語
本指南介紹了 如何在 Fedora 上使用 dialog
建立互動式 Shell Script,包含 選單、輸入框、確認框、進度條,並提供了一個 完整的選單範例。
🔹 適用場景:
- 系統管理工具
- 自動化腳本
- 安裝程式
- 互動式 Shell 介面
dialog
可以讓 命令列腳本更具互動性,提升 使用者體驗與可讀性!