shell程序设计(通信)1报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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),则测试条件

为真

相关文档
最新文档