版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章Linux
Shell编程shell简介与几种常用shellshell程序的变量和参数数值运算命令条件表达式循环语句函数定义其它语句5.1.1
shell简介Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式
地解释和执行用户输入的命令;作为程序设计语
言,它定义了各种变量和参数,并提供了许多在
高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并
以并行的方式协调各个程序的运行。因此,对于
用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好
Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。shell简介
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的
cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。5.1.2几种常用shell目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:#echo
$SHELL$SHELL是一个环境变量,它记录用户所使用的
shell类型。你可以用命令:#shell-name来转换到别的shell,这里shell-name是你想要尝
试使用的shell的名称,如ash等。这个命令为用户
又启动了一个shell,这个shell在最初登录的那个
shell之后,称为下级的shell或子shell。使用命令:$exit可以退出这个子shell。5.1.3
shell应用分类
从应用角度Shell可分为:交互式shell和非交互式
shell两种。
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。5.1.4管道和重定向
虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是
用来进行文件和文字操作的。这些不是系统命令,但是他们真的很重要。
管道:“|”将一个命令的输出作为另外一个命令的输入。grep
"hello"
file.txt
|
wc
-l重定向:<>>>5.1.5
echo的特殊用法
1、提取日期变量:例如echo
$(date“+%d”),%d%m%y%A%B%D等
2、设置字体和背景颜色:例如:echo–e“\033[30m”字体:30~37背景:40~475.2shell程序的变量和参数5.2.1
she
l定义的环境变量HOME:用于保存注册目录的完全路径名。PATH:用于保存用冒号分隔的目录路径名,she
l将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。TERM:终端的类型。UID:当前用户的标识符,取值是由数字构成的字符串。PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。PS2:在she
l接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时she
l判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。5.2shell程序的变量和参数5.2.2用户定义的变量用户可以按照下面的语法规则定义自己的变量:变量名=变量值要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号(“”)括起来。在编写shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。5.2shell程序的变量和参数5.2.2用户定义的变量有时我们想要在说明一个变量并对它设定为一个特定值后就不在改变它的值,这可以用下面的命令来保证一个变量的只读性:readonly变量名在任何时候,建立的变量都只是当前shell的局部变量,所以不能被shell运行的其他命令或shell程序所利用,export命令可以将一局部变量提供给shell执行的其他命令使用,其格式为:export变量名也可以在给变量赋值的同时使用export命令:
export变量名=变量值使用export说明的变量,在shell以后运行的所有命令或程序中都可以访问到。5.2shell程序的变量和参数5.2.3位置参数位置参数是一种在调用shell程序的命令行中
按照各自的位置决定的变量,是在程序名之后
输入的参数。位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二
个替换$2,依次类推。$0是一个特殊的变量,
它的内容是当前这个shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。如果参数超过9个,必须使用${}语法,如:${10}来获得参数值。$#:参数个数,$*:参数列5.2shell程序的变量和参数5.2.3位置参数位置参数是一种在调用shell程序的命令行中
按照各自的位置决定的变量,是在程序名之后
输入的参数。位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二
个替换$2,依次类推。$0是一个特殊的变量,
它的内容是当前这个shell程序的文件名,所以,$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。如果参数超过9个,必须使用${}语法,如:${10}来获得参数值。5.3数值运算命令5.3.1
数值运算符:+、-、*、/
、let
、exprexpr
:数值处理运算符expr
运算表达式`处理*
()等加上\(())或【】:((算术运算表达式))
let:let算术运算表达式-eq:等于,则为真egint1
–eq
int2-ne:不等于,则为真egint1
–ne
int2-gt:大于,则为真egint1
–gt
int2-ge:大于等于,则为真egint1
–ge
int2-lt:小于,则为真egint1
–lt
int25.3数值运算命令5.3.2字符串运算符:=:等于,则为真!=:不相等则,为真eg
str1
=:str2eg
str1
!=str2-z字符串:字符串长度等于零,则为真-z
str-n字符串:字符串长度大于零,则为真–n
str5.3数值运算命令5.3.3文件运算符:-e文件名:如果文件存在,则为真-r文件名:如果文件存在且可读,则为真-w文件名:如果文件存在且可写,则为真-x文件名:如果文件存在且可执行,则为真-s文件名:如果文件存在且至少有一个字符,则为真-d文件名:如果文件存在且为目录,则为真-f文件名:如果文件存在且为普通文件,则为真-c文件名:如果文件存在且为字符型特殊文件,则为真-b文件名:如果文件存在且为块特殊文件,则为真5.3数值运算命令5.3.4逻辑运算符:!expr:
如果expr为假,则为真expr1–a
expr2:
如果expr1、expr2同时为真,则为真expr1–o
expr2:
如果expr1、expr2有一个为真,则为真5.4条件表达式5.4.1
if条件语句shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:if条件命令串
then条件为真时的命令串else条件为假时的命令串
fi5.4条件表达式5.4.2
case条件选择if条件语句用于在两个选项中选定一项,而case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,其格式如下:case
string
inexp-1)若干个命令行1;;exp-2)若干个命令行2;;……*)其他命令行esac5.4条件表达式5.4.2
case条件选择shell通过计算字符串string的值,将其结果依次和表达式exp-1、exp-2等进行比较,直到找到一个匹配的表达式为止,如果找到了匹配项则执行它下面的命令直到遇到一对分号(;;)为止在case表达式中也可以使用shell的通配符(“*“?”、“[]”)。通常用“*”作为case命令的最后表达式以便使在前面找不到任何相应的匹
配项时执行“其他命令行”的命令。5.5循环语句5.5.1
for循环for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为:for变量名
[in数值列表]
do若干个命令行
done变量名可以是用户选择的任何字符串,如果变量名是
var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命
令列表。5.5循环语句5.5.3
while循环
while若干个命令行1do若干个命令行2done只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行
do...done之间的“若干个命令行2”。5.5循环语句5.5.4
until循环
until若干个命令行1do若干个命令行2doneuntil循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。5.6函数定义在she
l中还可以定义函数。函数实际上也是由若干条she
l命令组成的,因此它与she
l程序形式上是相似的,不同的是它不是一个单独的进程,而是she
l程序的一部分。函数定义的基本格式为:functio
name{若干命令行}调用函数的格式为:functio
name
param1
param2……she
l函数可以完成某些例行的工作,而且还可以有自己的退出状态,因此函数也可以作为if、while等控制结构的条件。在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时she
l将把这些参数分别赋予相应的位置参数$1、$2、
.及$*。5.7.1
shift语句
Shift命令用来将存储在位置参数中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力设施检修维护服务合同协议三篇
- 落实合作细节的商洽函8篇范文
- 化工企业仓储管理系统配置实施手册
- 软件行业软件研发及运维流程优化方案
- 企业文化建设与员工激励系统设计指南
- 数据中心电力系统故障处理方案手册
- 餐饮连锁店店长餐厅运营与服务品质KPI考核表
- 酒店管理与客户体验升级策略手册
- (正式版)DB14∕T 703-2012 《气象灾害等级划分》
- 电力电子变换器热管理方案指引
- 2026-2027学年八年级上学期统编版历史期中测试卷(含答案)
- 分公司章程范本
- 2026年中级注册安全工程师《金属非金属矿山安全实务》考试真题及答案
- 2025年生物物理所博士英语笔试及答案
- 乡镇卫生院生物安全制度
- 内蒙古呼和浩特市新城区2025-2026学年八年级上学期期中考试物理试卷(含答案)
- 2025年军队基层常用文书写作与范例
- GB/T 20118-2025钢丝绳通用技术条件
- 渐冻症课件教学课件
- 医院重点专科建设申报汇报
- 人教版 浙教版 培智 生活语文五年级上册 部分教案
评论
0/150
提交评论