shell程序设计(通信)1报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shell程序设计
本章的学习目标
●了解shell的地位和作用
●熟练掌握shell脚本的建立与执行方法
●掌握shell的变量及特殊字符
●掌握shell的输入输出命令
●掌握shell程序逻辑结构语句
主要内容
● Shell概述
● Shell的变量
● Shell中的特殊字符
●Shell编辑中的输入输出命令
● Shell结构控制语句
Shell简介
1、Shell的功能(1)作为命令解释程序
(2)作为一种高级程序设计语言
shell是一种命令行解释程序,它提供了用户与操作系统之间基于命令行的交互界面。用户命令行输入命令,由SHELL对它们做出解释,并将其送往操作系统去执行。然而,它不仅仅是一种交互式语言,它还是一种可编程的程序设计语言。将若干个shell命令写入一个文件就构成了一个shell程序,它可以被shell逐条的解释执行。
Shell简介
shell程序可以使用各种变量、参数和控制结构来组织命令流程,自动化的完成各种复杂冗繁的处理工作。
shell是基于字符串的语言:只做字符串处理,不支持复杂的数据结构和运算。Shell 输出也全部是字符方式。
2、Shell的主要版本:sh csh ksh
在linux系统中流行的使用的shell主流是Bash,它是Bourne Again Shell的缩写,bash 是由bourne shell发展而来的,但是它包含了csh和ksh的特性。
shell脚本的建立与执行
●shell脚本的建立
●Shell脚本是文本文件,可以用任何文本编辑器建立和编辑脚本,shell脚本文件
的名称没有限定的扩展名,通常不带扩展名或带“.sh”扩展名。
●①vi shell脚本名
●②cat >文件名
●。。。。。
Ctrl+d
例9.1 第1个Shell程序:
$ cat hello #hello程序
# This is a shell script to say hello.
echo Hello World!
echo -n “Today is ”
date “+%A, %B %d, %Y.”
$ . hello #运行hello程序
Hello World!
Today is Saturday, October 13, 2015.
$
这个hello程序的第1行是注释,后面3行是命令。在执行此程序时,Shell依次执行这3个命令并输出显示信息。
shell脚本的建立与执行
●shell脚本的执行方式主要有3种
●(1) 将脚本作为可执行文件执行:
$ chmod a+x hello
$ ./hello
用文本编辑器生成的脚本文件默认是没有x权限的,也就是说是不可直接执行的。赋予x权限后,脚本就可以像一般的Shell命令那样执行了。如果脚本不在系统存放命令的标准目录下,需要在执行时指定脚本的路径。上例中脚本hello放在当前目录下,所以要用./hello来运行。
shell脚本的建立与执行
(2) 启动一个Shell子进程来执行脚本文件:
$ sh hello #或sh < hello
执行此命令行时,Shell进程先启动一个bash子进程,让它执行hello脚本的内容,执行完毕后bash子进程也终止。在这种方式中,脚本是作为命令参数传给子Shell的。子Shell运行时读取该文件并执行其内容,因此脚本文件不必有执行权限。
shell脚本的建立与执行
(3) 让当前Shell进程执行脚本文件:
$ . hello #注意.后面的空格
“.”是一个Shell内部命令,hello是它的参数。“.”命令的功能是读取参数指定的文件,执行其内容。这种执行方式与第2种方式类似,区别在于此方式是由当前Shell进程来执行脚本文件的。
shell的变量
●Shell是基于字符串的编程语言,shell的变量只能存储字符串。
●Shell的变量有两种类型,即shell环境变量和用户自定义变量。
●Shell的环境变量:作用是定制shell的运行环境,保证shell正确执行,它又分为可
写和只读两大类。
●1、可写的shell环境变量
可写的shell环境变量可以对它们进行赋值,大部分可写的shell环境变量都在登录过程中执行“/etc/profile”文件时进行初始化。该文件由系统管理员设置,用于为系统上的所有用户建立一个公共环境。
部分重要的可写环境变量
CDPATH:包含一系列目录名;如果该变量未设置,cd命令将搜索当前目录。
ENV:UNIX/ linux查找配置文件的路径
HOME:用户初次登录时的起始目录
PATH:包含了用户的搜索路径的变量,也即shell用来搜索外部命令或者程序的目录。
PS1:在命令行上出现的shell提示符。
PS2:如果shell认为一个命令尚未结束,例如当命令以作为转义字符的反斜杠终止时,则在命令的第二行显示第2个shell提示符
PWD:当前工作目录的名称
TREM:用户控制终端的类型
PPID:父进程的进程ID号
●2、只读的shell环境变量
只读的shell环境变量的变量名和值有shell自动设置。用户能使用和读取它们的值,但不能对它们进行更改,只读的shell环境变量有两种:一种是特殊的环境变量;另一种是位置参数。
特殊的环境变量
●$@所有参数字符串组成的字符串
●$0 shell程序名
●$1-$9第一至第9个命令行参数的值
●$#命令行参数的个数
●$$当前进程的进程ID(PID)
●$?最后执行的一条命令的退出状态,返回值为0则成功,非0则失败
●$!在后台运行的最后一个进程的进程ID
位置参数
●在命令行传递给shell脚本的参数。
●共有十个位置参数,依次是
●$0,$1,$2,…,$9
●必有$0;而其他位置参数依据实际需求,可有可无。
●输出位置参数
●可以用echo命令输出位置参数
[root@localhost ~]# cat var_test
echo My name is $0, I have $# parameters, they are $@
echo The first of them is \“$1\”
字符串测试
参数功能
str 如果字符串str不是空字符串,则测试条件
为真
str1 = str2 如果strl等于str 2,则测试条件为真(注
意,“=”前后须有空格)
str1 ! = str2 如果str1不等于str2,则测试条件为真
-n str 如果字符串str的长度不为0,则测试条件为
真
-z str 如果字符串str的长度为O,则测试条件为真例如:
●(1)判断两个变量S1与S2字符串是否相等,可以写成[“$S1” = “$S2”]或者
test “$S1” = “$S2”
●(2)在引用变量及字符串中,要求用双引号括起来,如判断变量S1是否等于字符
串“yes”可以写成:
[“$S1” = “yes”]或者test “$S1 = “yes”
幻灯片52
数值测试
参数功能
n1 –eq n2 如果整数n1等于n2(n1 = n2),则测试条件
为真