書-Linux命令行與shell腳本編程大全(第3版)

image

 

視窗製作-dialog

dialog-msgbox

dialog-inputbox

dialog-yesno

dialog-textbox

dialog-menu

dialog-fselect

實例

 

視窗製作-dialog

一種可以在命令行中創建標準的視窗。

 

詳細的訊息可以用man來看。

指令:man dialog

 

dialog-msgbox

指令: dialog –msgbox “hello” 10 20  //text height width

image

 

dialog-inputbox

指令: dialog –inputbox “hello” 10 20  //text height width

指令: dialog –inputbox “hello” 10 20 2>abc  //把輸入的值輸出到abc這個文件中。

image

 

dialog-yesno

指令:dialog --title “question” --yesno “is true or false?”

image

 

dialog-textbox

指令:dialog --title “question” --textbox /etc/passwd 15 45

 

image

 

dialog-menu

指令:dialog  --menu 10 20 5 1 “A” 2 “B” 3 “C”

 

10:weight

20:hight

5:一次顯示的項目數

 

image

 

dialog-fselect

指令:dialog --title “Select file” --fselect HOME/ 10 50

image

實例

跟上一篇一樣,只不過把顯示的方式都用這種來用。

菜單樣子:

image

我們來一行一行慢慢的做出來,有完整的程式碼,程式碼底下有說明。


#!bin/bash

function display {
    df -k>temp
    dialog --textbox temp 20 60
}
function location {
     pwd>temp
    dialog --textbox temp 20 60   
}
function name {
    who>temp
    dialog --textbox temp 20 60
}

temp=(mktemp -t test.XXX)
temp2=(mktemp -t test2.XXX)

while [ 1 ]
do
dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display location" 3 "Display name" 0 "Exit" 2>temp2
if [ ? -eq 1 ]
then 
   break
fi
select=(cat temp2)
    
case select in
    0)
        break;;
    1)
        display;;
    2)
        location;;
    3)
        name;;
    *)
        dialog --msgbox "sorry , invalid selection" 10 30
esac
done
rm -rf temp 2> /dev/null
rm -rf temp2 2>/dev/null
     

 

 

方法裡有兩行,第一行是把df -k 、who 、pwd等指令的結果定向給temp,第二行就是顯示結果。

mktemp的功用是把X號變成隨機數,這樣就不會重複(詳細的內容可以去目錄找找看)

 

image

無限迴圈裡用dialog的menu把結果定向給temp2,if判斷式的作用是如果選擇Cancel時跳出。

image

這就是case判斷式,上一行把temp2的內容給select。

image

 

定義函數等待呼叫。

image

把這些文件刪除。

image

結果:

這樣子就有感覺了。

image   

文章標籤
全站熱搜
創作者介紹
創作者 讀書小天地 的頭像
讀書小天地

書籍分享天地

讀書小天地 發表在 痞客邦 留言(0) 人氣(561)