Linux程序設計——shell

Linux是一個開源的操作系統,支持C/C++、Java、Ruby等程序設計語言,使用這些開發語言可以實現許多強大的功能,同樣使用Linux系統本身提供的工具——shell也可以輕鬆實現這些強大的功能。相對於其他編程語言shell可以快速、簡單地完成編程,而且易於配置、維護,具有較好的可移植性。但是shell也有一定的缺點,因爲shell程序的特點使得其不適合用於完成時間緊迫型以及處理器忙碌型的任務。


shell語言和其他編程語言一樣,有自己固定的語法結構,包括對變量、條件語句、控制結構、循環結構、選擇結構、函數的定義。這些方面的定義及使用和其他編程語言都是很相似的,只是在一些細節處理方面有些需要注意的地方。


在shell腳本程序中可以執行命令,這裏的命令包括兩類,即內置命令和外部命令,相對外部命令,內置命令的執行效率更高。這些命令包括break、:、continue、.、echo、eval、exec、exit n、export、expr、printf、return、shift、trap、unset、find、grep。其中與grep命令相關的還有正則表達式。正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容,許多編程語言都支持正則表達式。通過正則表達式的編寫,可以很方便地實現一些複雜的功能,簡化代碼的書寫。


shell的功能強大之處還體現在圖形化程序的開發。通過使用dialog工具命令創建各種類型的圖形框。例如:

dialog --msgbox "Hello World" 9 18

執行上述代碼會在屏幕上顯示一個圖形化的消息框,點擊OK按鈕可以關閉這個消息框。除了消息框,圖形框的類型還包括:複選框、信息框、輸入框、菜單框、單選框、文本框以及是/否框。通過這些圖形框的組合使用,能夠實現簡單的圖形化程序的開發。下面是一個使用dialog工具命令的例子。

#!/bin/sh

#Ask some question and collect the answer

dialog --title "Questionnaire" --msgbox "Welcome to my simple survey" 9 18

dialog --title "Confirm" --yesno "Are you willing to take part?" 9 18
if [ $? != 0 ]; then
	dialog --infobox "Thank you anyway" 5 20
	sleep 2
	dialog --clear
	exit 0
fi

dialog --title "Questionnaire" --inputbox "Please enter your name" 9 30 2>_1.txt
Q_NAME=$(cat _1.txt)

dialog --menu "$Q_NAME, what music do you like best?" 15 30 4 1 "Classic" 2 "Jazz" 3 "Country" 4 "Other" 2>_1.txt
Q_MUSIC=$(cat _1.txt)

if [ "$Q_MUSIC" = "1" ]; then
	dialog --title "Likes Classical" --msgbox "Good choice!" 12 25
else
	dialog --title "Doesn't like Classical" --msgbox "Shame" 12 25
fi

sleep 2
dialog --clear
exit 0
除了dialog命令,如果Linux系統是基於GNOME的GUI,也可以使用gdialog命令代替dialog。


以上幾個方面雖然只是對shell進行了簡單的描述,但是可以看出shell本身是一種功能強大的程序設計語言,能夠輕鬆調用其他程序並處理輸出的信息,也正是因此使得shell成爲文本和文件處理的理想工具。而且如果需要在Linux下開發應用程序而不確定其可行性時,可以利用shell編寫測試程序,如果在shell中可以實現需要的功能,那麼就可以使用其他語言實現。由此可見shell對於Linux程序設計有相當重要性的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章