linux-shell

转载 2013年12月06日 14:25:23

目标

本课中,你将学习:

创建和执行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命令用于查看一个命令从开始到结束所花的时间

 

Linux-shell常用时间格式

#获取昨天日期 yyyyMMdd 格式   yesterday=`date --date='1 days ago' +%Y%m%d`   #获取昨天日期 yyyy-MM-dd 格式   yesterd...
  • qq_34941023
  • qq_34941023
  • 2016年07月22日 23:28
  • 1615

网路配置基础【Linux-shell】

网路配置基础: A~C类IP地址部分私有不使用在Inter上: A类:10.0.0.0-10.255.255.255 B类:172.16.0.0-172.31....
  • CPPCPPCPPCPP
  • CPPCPPCPPCPP
  • 2017年08月02日 11:05
  • 195

Linux-shell下的作业管理

作业管理 举例来说,我们在登陆 bash 后, 想要一边复制文件、一边进行数据搜寻、一边进行编译,还可以一边进行 vi 程序撰写! 当然我们可以重复登陆那六个文字介面的终端机环境中,不过,能不能在一...
  • sinat_27298703
  • sinat_27298703
  • 2015年06月11日 16:17
  • 135

Linux-shell学习笔记--环境变量

Linux-shell 学习笔记–环境变量什么是环境变量环境变量是描述系统运行环境的一系列变量,如PATH描述了应该去哪里查找命令,SHELL描述了默认的shell是哪个。加载环境变量当一个shell...
  • charles_neil
  • charles_neil
  • 2017年06月23日 18:40
  • 841

Linux-shell常用时间格式

#获取昨天日期 yyyyMMdd 格式   yesterday=`date --date='1 days ago' +%Y%m%d`   #获取昨天日期 yyyy-MM-dd 格式   yest...
  • pyfpyfpyf
  • pyfpyfpyf
  • 2017年01月10日 11:58
  • 89

Linux-shell编程简单程序

实验环境 VMware Workstation Pro下Linux Red Hat 内核版本:2.6.32一、使用shell编程实现输入一个分数返回分数的等级 1.使用vim进行程序编写 具体...
  • Nick_Wang94
  • Nick_Wang94
  • 2016年04月15日 13:24
  • 748

linux-shell面试题 之三

由于工作的关系,收集了很多的shell面试题,有些比较有意思,比如我在Shell图形化监控网络流量中所应用的实例。有些纯粹是为折磨人用的题目。有的看完会心一笑,有的看了之后会以为是几年前开发的面试题。...
  • u014787999
  • u014787999
  • 2014年04月20日 10:13
  • 391

Linux-shell基础复习笔记

查看文件类型:file  xxx.log    增加文件执行权限:chmod +x  文件名称 查看编码环境变量:env |grep LANG shell定位:外层应用程序>shell命令解...
  • caoshichaocaoshichao
  • caoshichaocaoshichao
  • 2013年04月19日 00:45
  • 515

linux-shell脚本实战

一.BASH说bash之前,先说说脚本:脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别...
  • gan_ke
  • gan_ke
  • 2017年05月01日 23:48
  • 334

Linux-shell学习笔记

Linux shell script 学习笔记Shell简介 Bash是缩写,Linux默认shell,基于Bsh,完全兼容sh。 解释型语言:执行时通过解释器解释,效率低,但是对于文件、字符串等对象...
  • WWWWWWORK
  • WWWWWWORK
  • 2015年10月30日 10:06
  • 143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux-shell
举报原因:
原因补充:

(最多只允许输入30个字)