SUSE Linux Shell Script 基礎入門 - 使用 dialog 建立互動式對話框
dialog
是一個在 Linux Shell Script 中用來建立圖形化對話框(TUI - Text User Interface)的工具。透過 dialog
,我們可以建立選單、輸入框、確認框、進度條等互動式介面,提升 Shell 腳本的可讀性與使用者體驗。
本指南將介紹如何在 SUSE Linux 上安裝 dialog
,並撰寫簡單的 Shell 腳本來實作互動式對話框。
目錄
安裝 dialog
在 SUSE Linux 上,使用 zypper
安裝 dialog
:
sudo zypper install 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=$(<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
將選擇結果儲存到檔案。case
根據使用者的選擇執行相應指令。
執行:
chmod +x menu.sh
./menu.sh
建立輸入框
輸入框可讓使用者輸入文字,例如輸入使用者名稱。
#!/bin/bash
dialog --inputbox "請輸入您的姓名:" 10 40 2>name.txt
name=$(<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
模擬處理時間。
綜合範例 - 互動式 Shell 選單
以下是一個完整的互動式 Shell 腳本,使用 dialog
建立選單,讓使用者執行不同的系統指令。
#!/bin/bash
while true; do
dialog --menu "選擇要執行的操作:" 15 50 4 1 "顯示當前時間" 2 "檢查磁碟使用情況" 3 "顯示登入使用者" 4 "退出" 2>choice.txt
choice=$(<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
結語
本指南介紹了如何在 SUSE Linux 上使用 dialog
建立互動式 Shell 腳本,包含選單、輸入框、確認框、進度條,並提供了一個完整的選單範例。適用於系統管理工具、自動化腳本、安裝程式等場景,讓命令列腳本更具互動性,提升使用者體驗與可讀性。