关闭

linux-shell

305人阅读 评论(0) 收藏 举报
分类:

目标

本课中,你将学习:

创建和执行shell脚本
使用echo命令显示消息
创建变量
使用本地和全局变量
计算表达式
使用if构造执行基于条件的shell脚本

使用case构造执行基于条件的shell脚本

目标()

识别用于执行重复任务的while、foruntil构造
shell脚本中使用breakcontinue语句
控制进程的执行
在后台执行进程
终止进程
计算命令的开始到结束之间的时间,计算shell脚本中break continue 语句之间的时间

 

开始

Shell脚本
如果你有一系列经常使用的Linux命令,你可以把它们存储在一个文件中。Shell可以读取这个文件并执行其中的命令。这样的文件被称为脚本文件
执行shell脚本
ü要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写它
ü为了使用bashshell来执行脚本, magic,  其命令是:

$ bash magic

 

 

开始()

echo命令
用于在屏幕上显示消息

$ echo"This is an example of the echo command"

这是echo 命令的一个例子

 

开始()

# 符号
用于在shell脚本中可以包含注解入口

echo “Hello”

# This is a comment line. This would notproduce any output

echo “world”

   这个例子中,第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息

 

变量

创建变量
可以在任何时间通过简单的赋值来创建。

语法

<variable name>=<value>

Linux中的所有变量都被当作字符串。
引用变量
$符号用于引用一个变量的内容

变量(续)

引用变量()
variable1=${variable2}
读入值给变量
在执行shell脚本时,shell还允许用户从键盘中输入一个值给变量。可以使用read命令来做

$ read fname

本地和全局 Shell 变量

局部变量
当引用shell时,只有创建它的shell能够知道到变量的存在
全局变量
称为子shell
shell中创建的变量是局部于创建它的shell ,除非使用export命令特别指出是全局的
环境变量
通过改变这些变量的值,用户能够定制此环境

本地和全局 Shell 变量()

环境变量()
一些环境变量的例子是HOME, PATH, PS1, PS2, LOGNAME, SHLVL, SHELL
HOME变量
Linux系统中的每个用户都有一个相关的称作HOME的目录
当一个用户登录后,他/她进入相应的HOME的目录

$ echo $HOME

本地和全局 Shell 变量()

环境变量()
PATH变量
包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索
PS1变量
PS1(PromptString1)变量包含了shell 提示符,$符号

$ PS1="HELLO>"  <Enter>

HELLO>  New prompt

本地和全局 Shell 变量()

环境变量()
PS2变量
是为第二个提示符设置值的环境变量
LOGNAME变量
包含用户的注册名字

$ echo “${LOGNAME}”

SHLVL变量
该变量包含你当前工作的shelllevel

本地和全局 Shell 变量()

环境变量()
SHELL变量
环境变量存储了用户的缺省shell
env命令
可用来查看所有的已移出的环境变量表和它们各自的值

命令替换

在单个命令行中使用多个命令的另一种方法(非Pipes)是通过命令替换
例子

echo "The date is `date`”

expr命令
用于求值算术表达式。该命令的输出被发送到标准输出

$ expr 4 + 5 将在屏幕上显示9

命令替换()

算术展开:
你可以在$((… ))中括一个表达式,用下面的命令来计算它的值:

$((expression))

稍等一下

  编写一个shell脚本用于计算户叫中心未应答的询问的数量。该脚本应该接收一天内所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量。

  所有未应答的询问的总数=所有询问的总数-应答的询问的数量

条件执行

test或者 []命令
求值表达式,并返回true(0)false
if构造
Linux shell提供了循环和判定的构造,可以在shell脚本中使用
算术测试
结合if构造,它可用于测试变量的数字值

条件执行()

串测试
test命令也可用于字符串
文件测试
test命令也可用于检查文件的状态
exit命令
用于终止shell脚本的执行并返回到$提示符下

稍等一下

   在呼叫中心,通过计算一天里回答的询问的百分比来测量Customer Care Executive的工作效率。编写一个shell脚本根据一个员工一天里处理的询问的百分比来显示他的等级。

同一天里处理的询问的百分比                 等级

<=80                                                      平均

> 80 and <=90                                       

>90                                                         杰出的

caseesac构造

shell脚本中使用的这个构造依据变量的值而执行一组特定指令
当变量的值和其中一个指定的值相匹配时,就执行写在该值下的一组命令

稍等一下

  Diaz电信向它的客户提供各种服务。你要创建一个菜单来显示服务的名字,而且当客户选择一个名字时,显示它相应的描述。

序号             服务名字             描述

    1                   Global Roam     当你周游世界时,你需要一个手机号码

   2                     V-mail               当你不法打电话时,你要记录你的消息.

   3                   Mail on Move      你可以在你的手机上接收电子邮件.

  4                     Caller-ID            当你接听一个电话时可以在手机屏幕上

                                                   显示打电话人的电话号码,以知道谁打

                                                   给你

  5                    Dial a Pizza        你可以通过你的手机定购一个pizza.

迭代

while构造

while <条件>

do

<命令(s)>

done

只有条件为真时,就执行dodone之间的命令
until构造
until循环构造的求值模式于while循环相反。until循环将继续执行直到求值的条件为真。

迭代()

for构造

for variable_name in <list_of_values>

do

done

for循环取一列值作为输入并对循环中每个值执行循环
breakcontinue命令
break命令引起终止循环
continue命令的使用将强迫一个新的重复

稍等一下

    你需要在保存Customer Care Center工作的八位职工的名字,E-mail地址和电话号码。这些数据将以以下格式保存在ccemployee文件中:

  EmployeeCode : EmployeeName : E-mail : Telephone-Number

  这些员工的员工代码将自动的产生,范围并从1000到1008。Shell脚本应基于员工代码告诉你详细资料。

控制进程的执行

请求后台处理
用于请求后台进程的符号是 (&)。

$ wc tempfile &

[1] 2082

$ vi newfile

检查后台进程
Ps(进程状态)命令为每个当前活动的每个进程产生一行人口。

 

控制进程的执行()

终止后台进程
可用kill命令,如下所示。

$ kill 278

查看完成一个命令所花的时间
你可以使用time命令来查看一个命令从开始到结束所花的时间。.

$ timefind /etc -name "passwd" 2> /dev/null

 

小结

本课中,你学习了:
Shell脚本允许输入/输出、操纵变量、和强有力的控制流以及编程的迭代构造
echo命令被用于在屏幕上显示消息
通过带有#符号的前缀语句,Shell脚本中可以包含注解入口
当引用一个变量时,只有创建它的shell知道该变量
export命令可用于从父shell向子shell参数传递

小结()

一些环境变量是HOME, PATH, PS1, PS2, LOGNAME, SHLVL, SHELL
命令替换中使用重音符
expr命令用于求值算术表达式
使用命令替换计算算术表达式
test []命令用于求值条件
shell脚本中ifcase构造用于判定

小结()

Whileuntilfor构造用于创建执行重复任务的shell脚本
Break命令用于终止一个循环,而continue命令再开始循环
使用&符号把进程发送到后台
ps进程状态)命令用于为每个当前活动的每个进程生成一行人口
nKill命令用于终止一个进程

小结()

Time命令用于查看一个命令从开始到结束所花的时间

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47186次
    • 积分:855
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:180篇
    • 译文:1篇
    • 评论:15条
    文章分类
    最新评论
  • 使用ideploy的安装

    caltonia: 有没有ideploy安装包下载

  • [JAVA软件工程师-面试宝典-2013最新版]

    u010850027: 谢谢分享 学习了

  • 测试理论

    xiaomin881122: 4 软件测试计划定义软件项目的测试计划是描述测试目的、范围、方法和软件测试的重点等的文档。对于验证软...

  • 测试理论

    xiaomin881122: 3 软件测试计划模板一般包括哪些要素 1. 引言:目的、背景、范围、定义,参考材料;2.测试内容:测...

  • 测试理论

    xiaomin881122: 2 软件测试质量包括哪些管理要素 1、 缺陷遗漏率、测试覆盖率、缺陷等级划分、缺陷原因分析、缺陷记录...

  • 测试理论

    xiaomin881122: 1 软件测试报告其实没有什么固定格式,我认为只要介绍清楚你的测试范围、测试目的、测试执行过程情况,B...

  • test(software)

    xiaomin881122: 测试流程依次如下:1. 需求:阅读需求,理解需求,和客户,开发,架构多方交流,深入理解需求。--te...

  • test(software)

    xiaomin881122: 1、 开项目需求评审会议(项目组成员对需求进行评审) 2、制定测试计划 3、根据项目需求说明书和测试...

  • test(software)

    xiaomin881122: 采用国际模型:需求分析,概要设计,详细设计,编码,单元测试,集成测试,确认测试 系统测试,验收测试。...

  • test(software)

    xiaomin881122: 测试准备-测试计划-测试需求-测试用例-测试执行-测试缺陷管理-测试报告总结缺陷流程管理:new- ...