您的位置:首页 > 运维架构 > Shell

Linux程序设计——shell

2012-03-28 21:34 232 查看
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程序设计有相当重要性的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: