- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch1.8shell编程
1.8 Shell编程 1.8 Shell编程 1.8.1 shell简介 1.8.2 shell的输入和输出 1.8.3 正则表达式 1.8.4 grep与sed 1.8.5 管道与重定向 1.8.6 变量与表达式 1.8.7 程序结构 1.8.8 shell程序实例 1.8.1 Shell 简介 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。 Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参 数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。 SHELL与内核的关系 SHELL的种类 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。 特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 Shell有时并不是最好的解决方案 对于资源需求比较大的任务,尤其当运行速度是一个重要指标时,如排序等。 涉及大量的数学运算,如浮点算术运算、高精度运算或复杂的数值运算时。 有重要影响的关键应用 出于安全考虑,保证系统不受侵入、攻击和恶意破坏 涉及其他类型的文件操作时(shell只限于顺序文件访问) 设计多维数组、链表、树等数据结构 需要图形界面 需要直接访问硬件系统 需要做端口或套接字时 需求使用unix系统调用或函数库时 Shell脚本 利用文本编辑器,事先把一系列unix命令或可执行程序放到文件中,然后修改文件的访问权限,使之能够象系统命令或使用程序一样执行,即shell脚本。 可包含unix命令,可执行程序,也可以包含控制结构和变量,有参数等。 执行时,将一个一个顺序执行文件中的所有命令。 开始的几个问题 可以使用任何文本编辑器制作脚本 emacs、vi、gedit 、vim 程序通常以下面的行开始(在文件的第一行):#!/bin/bash 改变文件属性为可读可执行 chmod +x filename ./filename 来执行编写的脚本。 1.8.2 shell常用命令 输出echo 使用echo命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为: echo string echo命令有很多功能,其中最常用的是下面几个: \c 输出所有字符串后,不换行。 \t 制表符。 \n 换行。 \b 退格符(backspace) 例如:如果希望提示符出现在输出的字符串之后,可以用: $echo “What is your name:\c” $read name 上面的命令将会有如下的显示: 其中“□”是光标。 还可以用echo命令输出转义符以及变量。在下面的例子中,显示出$home目录,并且可以让系统执行tty命令(注意,该命令用键盘左上角的符号,法语中的抑音符引起来,不是单引号)。 引号是一个特殊字符,所以必须要使用反斜杠\来使shell忽略它的特殊含义。 假设希望使用echo命令输出这样的字符串:“/dev/rmt0”,只要在引号前面加上反斜杠\即可: 输入read 使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。 它的一般形式为: read varible1 varible2 ... 计算表达式的值 expr expression :计算表达式的值,然后把计算结果送到标准输出。表达式可以是字符串比较表达式、整数算术表达式或模式匹配表达式。 $timezone=PRC $expr $timezone = “PRC” (值为真) 1 $expr $timezone = “GMT” (值为假) 0 $n=3 $expr $n + 7 10 expr命令后运算符两边有空格! let和((…)) 计算和测试算术表达式,执行整数运算,实际是expr的简化。 支持+ - * / % += -= *= /=
文档评论(0)