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脚本攻略(第2版)

  • 2017年11月15日 21:57
  • 31.82MB
  • 下载

linux shell编程指南第九章------AWK 介绍3

s u b s t r的另一种形式是返回字符串后缀或指定位置后面字符。这里需要给出指定字符串及 其返回字串的起始位置。例如,从文本文件中抽取姓氏,需操作域1,并从第三个字符开始: [root@loca...

Linux命令行与Shell脚本编程大全

  • 2017年11月12日 22:48
  • 98.16MB
  • 下载

Linux服务器内存、CPU、文件系统、磁盘IO性能以及网络连通性shell巡检

shell自动巡检服务器基础情况,随时随地掌控服务器运行情况。

Linux命令行与shell脚本编程大全

  • 2017年11月09日 22:39
  • 12.38MB
  • 下载

linux shell

  • 2016年12月20日 11:41
  • 64KB
  • 下载

[问题篇]VMWare搭建Openstack——执行自动化Linux Shell 创建Admin Tenant User报错

最近在写基于OpenStack部署的自动化部署脚本,我没有使用官方推荐的工具,由于目前没有足够多的时间,学习成本比较高,还是自己写Linux Shell来的比较快,而且比较灵活,也不复杂,不过这个东西...

Linux与unix shell编程指南

  • 2016年07月06日 21:01
  • 17.04MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux-shell
举报原因:
原因补充:

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