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 answerdialog --title "Questionnaire" --msgbox "Welcome to my simple survey" 9 18dialog --title "Confirm" --yesno "Are you willing to take part?" 9 18
if [ $? != 0 ]; thendialog --infobox "Thank you anyway" 5 20sleep 2dialog --clearexit 0
fidialog --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" ]; thendialog --title "Likes Classical" --msgbox "Good choice!" 12 25
elsedialog --title "Doesn't like Classical" --msgbox "Shame" 12 25
fisleep 2
dialog --clear
exit 0

除了dialog命令,如果Linux系统是基于GNOME的GUI,也可以使用gdialog命令代替dialog。

以上几个方面虽然只是对shell进行了简单的描述,但是可以看出shell本身是一种功能强大的程序设计语言,能够轻松调用其他程序并处理输出的信息,也正是因此使得shell成为文本和文件处理的理想工具。而且如果需要在Linux下开发应用程序而不确定其可行性时,可以利用shell编写测试程序,如果在shell中可以实现需要的功能,那么就可以使用其他语言实现。由此可见shell对于Linux程序设计有相当重要性的。

Linux程序设计——shell相关推荐

  1. linux shell程序设计实验报告,linux的shell脚本实验报告

    <linux的shell脚本实验报告>由会员分享,可在线阅读,更多相关<linux的shell脚本实验报告(7页珍藏版)>请在人人文库网上搜索. 1.第二次实验内容一.实验名称 ...

  2. Linux的shell脚本函数教程

    Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...

  3. Linux程序设计实验项目六,《linux程序设计》实验教学大纲

    <linux程序设计>实验教学大纲 课程名称:Linux程序设计 课程编号:408412420408436407 适用专业:计算机科学与技术网络工程软件工程 总 学 分:3 总 学 时:4 ...

  4. Linux 下shell编程

    什么是shell?Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层.shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便 ...

  5. linux shell 原理,linux下shell的工作原理

    linux下shell的工作原理 2009-12-8 10:19:53   出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...

  6. linux程序设计项目报告,Linux程序设计实验报告大作业

    Linux程序设计实验报告大作业 实 验 报 告 课程名称: LINUX程序设计 学 院: 计算机学院 专 业: 软件工程 班 级: 14-3 姓 名: 张正锟 学 号: 201401061038 2 ...

  7. linux系统程序问题报告,Linux程序设计实验报告.docx

    Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...

  8. 读书笔记之:Linux程序设计(第4版)(ch1-7) [ 学如逆水行舟,不进则退 ]

    <Linux 程序设计>是一本非常好的书,内容很全面,并且对于给出的例子都进行了详细的讲解.并且是通过一个的小型的项目的来讲解的:开始是使用shell进行编程实现,然后逐步进行改进,使用C ...

  9. [Linux] 读书笔记之:Linux程序设计(第4版)(ch1-7) [ 学如逆水行舟,不进则退 ]...

    <Linux 程序设计>是一本非常好的书,内容很全面,并且对于给出的例子都进行了详细的讲解.并且是通过一个的小型的项目的来讲解的:开始是使用shell进行编程实现,然后逐步进行改进,使用C ...

  10. linux之shell脚本

    1.shell脚本简介 shell脚本是与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或管理用的,但是它比Wind ...

最新文章

  1. R语言chorolayer_R语言空间可视化:绘制英国脱欧投票地图
  2. 科大星云诗社动态20210121
  3. UVA 1625 Color Length DP
  4. 每日一题:leetcode456.132模式
  5. 如何使用 Laravel Facades ?
  6. 1005 继续(3n+1)猜想(25 分)
  7. 如何让网站文章秒收录
  8. 搞笑又雷人的个人签名
  9. Navicat或PLSQL如何导出表结构到Excel中
  10. 20162327WJH第一次实验——线性结构
  11. 如何修改计算机ip 地址子网掩码,如何查看和修改主机的ip地址和子网掩码
  12. 科研狗citavi/mendeley+word使用技巧外加读论文瞎琢磨
  13. 这些专业配音软件你值得拥有
  14. 「硬见小百科」电子器件封装缺陷和失效的形式
  15. 关于Attention的超详细讲解
  16. Swig/CPP2Java
  17. 一个简单的C语言程序(详解)
  18. MarkDown语法1:Typora
  19. 简单的ATM机代码实现
  20. 关于IOS系统,H5页面操作history.go(n)回退页面时不会刷新页面数据的问题

热门文章

  1. 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
  2. 排队论模型及MATLAB实现
  3. Golden Gate - 概念和机制
  4. 建立强有力的人脉关系
  5. 思科最模拟器Cisco Packet Tracer 7.3.0安装配置
  6. Uncaught RangeError: Maximum call stack size exceeded
  7. 微软开放必应搜索引擎核心算法
  8. 战略参股奥迪威,德赛西威“躬身入局”超声波雷达
  9. traceview使用总结
  10. P3853 路标设置