圖形化桌面上的腳本編程

1建立文本菜單

建立交互式shell腳本最長用的方法就是使用菜單。提供各類選項幫助腳本用戶瞭解腳本功能。菜單會清空顯示區域,而後顯示可用的選項列表。shell

1.1建立菜單函數bash

菜單佈局函數函數

建立菜單佈局函數的第一步是決定菜單上要顯示什麼,用echo命令顯示,在顯示前先用clear命令清楚當前終端會話terminfo數據。佈局

函數例子:spa

function menu {
  clear
  echo
  echo -e "\t\t\tSys Admin Menu\n"         #-e 選項識別換行符製表符等
  echo -e "\t1. Display disk place\n"
  echo -e "\t2. Display logged on users\n"
  echo -e "\t3. Diplay memory usage\n"
  echo -e "\t0. Exit program\n\n"
  echo -en "\t\tEnter option: "           #-en選項會讓顯示的一行末尾不加換行符
  read -n 1 option                 #read -n 數字  來限定取字符的個數,這樣用戶輸入數字後,不用按會回車鍵了
}

建立菜單要執行的函數命令行

爲菜單選項建立函數,能建立簡潔方便的case命令。code

樁函數(stub function):爲尚未實現的函數所建立,樁函數內沒有任何命令,或者只有echo語句來講明函數須要作什麼。orm

樁函數:
function diskspace {
  clear
  echo "This is where the diskspace command will go「
}

1.2添加菜單邏輯seo

建立邏輯將菜單選項和將要執行的函數鏈接在一塊兒,須要case命令。ip

case $option in
0)
  break;;
1)
  diskspace;;
2)
  whoseon;;
3)
 memusage;;
*)
  clear
  echo "Sorry Wrong slection";;
esac

整合菜單:

#!/bin/bash
#simple script menu
function diskspace {
  clear
  df -k
}
function whoseon {
  clear
  who
}
function memusage {
  clear
  cat /proc/meminfo
}

function menu {
  clear
  echo
  echo -e "\t\t\tSys Admin Menu\n"
  echo -e "\t1. Display disk place\n"
  echo -e "\t2. Display logged on users\n"
  echo -e "\t3. Diplay memory usage\n"
  echo -e "\t0. Exit program\n\n"
  echo -e "\t\tEnter option: "
  read -n 1 option
}
while [ 1 ]
do
menu
case $option in
0)
  break;;
1)
  diskspace;;
2)
  whoseon;;
3)
 memusage;;
*)
  clear
  echo "Sorry Wrong slection";;
esac
echo -en "\n\t\tHit any key to continue"
read -n 1 line
done
clear

1.4使用select命令建立菜單

select命令容許從單個命令行建立菜單,而後再提取輸入的並自動處理。select命令格式:

select variable in list
do
  commands
done

list參數是構成菜單的空格分隔的文本選項列表。select命令會在列表中將每一個選項做爲一個編好的選項顯示,而後爲選項顯示一個特殊的由PS3環境變量定義的提示符。

#!/bin/bash
#using select in the menu
function diskspace {
  clear
  df -k
}
function whoseon {
  clear
  who
}
function memusage {
  clear
  cat /proc/meminfo
}

PS3="Enter option: "
select option in "Display disk place" "Display logged on users" "Diplay memory usage" "Exit program"   #
do
case $option in
"Exit program")            #select 存儲在變量中的結果值是整個文本字符串而不是跟菜單選項相關聯的數字
  break;;
"Display disk place")      #在case語句中須要比較文本字符串
  diskspace;;
"Display logged on users")
  whoseon;;
"Diplay memory usage")
 memusage;;
*)
  clear
  echo "Sorry Wrong slection";;
esac
done
clear

注意:比較字符串,PS3中存儲的也是文本字符串。

caishu@lab403-1F:~/shell_script$ ./menu2
1) Display disk place	    3) Diplay memory usage
2) Display logged on users  4) Exit program
Enter option: 1

文件系統           1K-塊      已用      可用 已用% 掛載點
udev             4053800         4   4053796    1% /dev
tmpfs             812996      1380    811616    1% /run
/dev/sda4      243764520  26002332 205356584   12% /
none                   4         0         4    0% /sys/fs/cgroup
none                5120         0      5120    0% /run/lock
none             4064972     73980   3990992    2% /run/shm
none              102400       276    102124    1% /run/user
/dev/sda1         165173     67727     85210   45% /boot
/dev/sda3      708570096 183163596 489390116   28% /home

2.使用窗口

dialog包能夠建立標準的窗口對話框。dialog命令使用命令行參數來決定生成哪一種窗口部件(widget)。在命令行上指定部件,須要使用雙破折線:dialog --widget parameters    其中widget是部件名,parameters定義了部件窗口的大小以及部件須要的文本。

dialog部件

部件 用法 描述
calendar dialog --calendar  parameters 提供選擇日期的日曆
checklist   顯示多個選項
form   構建一個表單
fselect dialog --fselect $目錄 height width 能夠用fselect目錄來瀏覽文件的位置並選擇文件。
gauge   顯示完成的百分比進度條
infobox   顯示一條消息但不用等待迴應
inputbox dialog --inputbox text height width   其中text是提示用戶輸入內容的文本 爲用戶提供一個簡單的文本框區域來輸入文本字符串,並將文本字符串的值發給STDERR,必須重定向STDERR來獲取用戶輸入
inputmenu   提供一個可編輯的菜單
menu dialog --menu "menun_ame"  height width totle 1"string" 2"string" 3"string" 4"string" .....其中totle是菜單項總數。 生成一個菜單
msgbox

dialog --msgbox text height width

dialog --title titlename --msgbox text height width

加標題參數

在窗口中顯示一條簡單的消息,等待用戶單擊ok才消失
pause   顯示一個進度條來顯示特定暫定時間的狀態
passwordbox   顯示一個文本框來輸入文本,但會隱藏輸入的文本
passwordbox   顯示一個帶標籤和隱藏文本輸入的表單
radiolist   提供一組菜單選項,但只能選擇其中一個
tailbox   用tail命令在滾動窗口中顯示文件的內容
tailboxbg   跟tail模式同樣,可是在後臺模式中運行
textbox dialog --textox text height width  其中text是要顯示的文件,能夠你想要顯示內容的文件如/etc/passwd 在窗口中顯示大量信息,會生成一個滾動窗口來顯示參數中指定文件中的文本。
timebox   提供一個選擇小時、分鐘和秒的窗口
yesno dialog --yesno text height width 容許用戶回yes/no問題,在窗口底部生成2個按鈕,一個yes,一個no

每一個部件都提供了2種輸出格式:使用STDERR;使用退出狀態碼。

若是部件返回了任何數據,好比菜單選擇,那麼dialog命令會將數據發送到STDERR。

退出狀態碼決定了用戶選擇的鈕。若是選擇yes或ok,返回0;若選擇cancel或no。返回1.

dialog選項

dialog命令中定製不少不一樣的選項,--title  參數就是其中一個選項。還有許多其餘選項,使用man dialog命令能夠查看。

3.使用圖形

KDE和GNOME桌面環境都擴展了dialog命令的想法。KDE環境中有kdialog包;GNOME環境中有gdialog包和zenity包(經常使用)。能夠用man命令查看其用法,在腳本中使用。

相關文章
相關標籤/搜索