信息技术-UNIX系统课件ch5
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测试语句应用
if [ $# -ne 1 ] then echo " Usage:exam directory" exit 1 fi if [ ! -d "$1" ] then echo "$1 is not a directory" exit 2 fi cd $1 ls -l
5.5 条件控制语句
case 变量in 模式1) 命令 …… 命令;; 模式2) 命令 …… 命令;; 模式n) 命令 …… 命令;; esac
5.5 条件控制语句
示例1
echo "Enter Choice: " read CHOICE case "$CHOICE" in 1) echo " Restoring...";; 2) echo " Archiving...";; 3) echo " Unloading...";; *) exit 1 esac
模式是正则表达式,可以使用通配符
5.5 条件控制语句
示例2
echo "Enter Choice: \c" read CHOICE case "$CHOICE" in 1|R) echo " Restoring...";; 2|A) echo " Archiving...";; 3|U) echo " Unloading...";; *) exit 1 esac
5.3.2 对字符串内容的测试
test test test test s -zs s1=s2 s1!=s2
5.3.3 对整数n的测试
test test test test test test n1 n1 n1 n1 n1 n1 –eq n2 –ne n2 –lt n2 –le n2 –gt n2 –ge n2
if test -d "$1" then cd "$1" ls -l fi if test -f "$1" then more "$1" else if test -d "$1" then cd "$1" ls -l else echo "$1 is neither a file nor a directory" fi fi
第五章 shell程序设计
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
5.2.4 shell的预定义变量和环境变量
环境变量的设置和显示
方法:
变量=值 export 变量
如:
HOME=/usr/bin export HOME export
5.2.5 shell中命令的位置变量
Shell解释用户命令时,将命令行的第1个字作为命 令名,而其他的字作为参数。出现在命令行上的位 置确定的参数称做位置参数 当命令对应的文件是Shell程序时,Shell会把位 置参数传送给该程序的位置变量。
5.6 循环语句
格式:
until 测试语句 do echo “Input N:" 命令表 until read N do done echo "sleep 2 seconds"
sleep 2 done echo $N
5.6 循环语句
格式:
until 测试语句 do 命令表 done
复杂的条件测试
逻辑非( NOT)操作符”!” [ !-r $1 ] 等价! test –r $1 逻辑与(AND)操作符”-a” [ -f “$myfile” –a –r ”$myfile”] 逻辑或(OR)操作符”-o” [ $str1 –ge 10 –o $str2 –le 100 ]
5.3.1 对文件特性的测试
test –[dfrwxs] file
-d file -f file -r file -w file -x file -s file 文件file存在且为目录 文件file存在且为普通文件 文件file存在且为可读文件 文件file存在且为可写文件 文件file存在且为可执行文件 文件file存在且为文件长度非0
脚本的内容
命令+语句+变量+常量
5.1.2 shell程序的格式
追求易于理解的脚本 #!/bin/bash 注释
5.1.3 shell程序的运行方式
shell程序以.sh为后缀名 运行方式
sh < file1.sh sh file1.sh ./file1.sh
5.2.4 shell的预定义变量和环境变量
预定义变量
$#
表示传递给Shell的参数个数(不包括Shell脚本 名本身)
$*
命令行中的所有位置参数
$@
与*类似
5.2.4 shell的预定义变量和环境变量
预定义变量
$$
当前进程号
$!
后台运行的最后一个进程的进程号
5.2.1 shell变量及变量赋值
shell变量的定义的规则
赋值方法
5.2.1 shell变量及变量赋值(续)
read 从标准输入读取数据,然后赋给指定 的变量
read 变量1 [变量2 ……] 输入数据个数少于变量个数,则相应的变量得 到空值
echo 将参数在标准输出上显示出来
5.2.7用命令做变量替换
反引号的使用
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
5.3 test命令的使用
test命令是常用的内部测试命令,可以 对文件、字符串和数值进行测试 test 条件 [ 条件 ] 方括号和条件之间必须有空格 用echo $?可以显示条件是否成立 0 成立 1 不成立
第1个位置参数记为$1 第2个为$2 …… 第9个位置参数记为$9
其中1~9是真正的参数名,加上“$”表示相应位置 变量的值。而$0永远表示命令名或Shell脚本名。
5.2.5 shell中命令的位置变量
位置变量的之值可以取自用户输入的行命令
prog $1 $2 $3 abc mnt xyz “abc” “mnt” “xyz”
$?
最后一条命令执行后的返回值
5.2.4 shell的预定义变量和环境变量
环境变量
环境变量用于所有用户进程(经常称为子进程) 用export输出 env显示环境变量
HOME=/usr/computer/student6 用户主目录, 注册时的初始目录 PATH=/bin:/usr/bin:$HOME/bin:./ 键盘命令的搜索路径 SHELL=/bin/sh 当前运行的shell名称 TERM=vt100 当前所用的终端类型
5.1 shell编程的基本知识
shell编程可完成的功能
shell程序的格式 shell程序的运行方式
5.1.1 shell程序可完成的功能
使用Shell脚本的原因
Shell脚本在处理自动循环或大的任务方面可节省大 量的时间,且功能强大 创建一个脚本,在使用一系列系统命令的同时,可 以使用变量、条件、算术和循环快速创建脚本以完 成相应工作。这比在命令行下一个个敲入要节省大 量的工作时间。
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
5.2 shell变量的使用
shell变量及变量赋值 变量的访问及变量参数替换 变量的作用域 shell的预定义变量和环境变量 shell中命令的位置变量 变量替换 用命令做变量替换
5.2.3 变量的作用域
shell变量分为局部定义和全局定义
本地变量:在用户现在的shell生命期的脚本中使用。 如果在shell中启动另一个进程或退出,此值将无效。 这个方法的优点就是用户不能对其他的shell或进程 设置此变量有效。 环境变量:用于所有用户进程(经常称为子进程)。 环境变量应用于用户进程前,必须用export命令导 出。环境变量与本地变量设置方式相同。
ห้องสมุดไป่ตู้
if test -f "$1" then echo "$1 is an ordinary file" cat $1 else echo "$1 is not an ordinary file" fi
5.5 条件控制语句
格式2
if命令表1 then 命令表2 else 命令表3 fi
if grep 'DAVE' date.file>/tmp/aaa then echo "DAVE in this file" else echo "DAVE not in this file" fi
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
5.4 shell程序的控制流
命令的返回状态
程序的控制结构
5.4.1命令的返回状态
echo $?
0:成功 1:失败
允许不同的匹配模式对应同一段命令,模式之间用”|”隔开,表 示或
5.6 循环语句
格式:
while 测试语句 do #!/usr/bin/ksh echo " Enter file name :" 命令表 read NAME done echo " Enter data:"
while read N do echo $N>>$NAME done cat $NAME
5.2.6 变量替换
${Var:-word}:表示若变量Var有值且非空 时,取该值。否则取word值,但Var变量值 不变。 ${Var:=word}:表示若变量Var有值且非 空时,取该值。否则取word值,同时Var变 量值变为word值。 ${Var:+word}:表示若变量Var有值且非 空时,取word值。同时Var变量值变为 word值。
在Shell程序中可以利用set命令为位置变 量赋值
set 123 abcd $1 “123” $2 “abcd”
5.2.5 shell中命令的位置变量
程序中所用位置变量少于命令行中的实参个数,或者实参超过 9个使用shift命令来移动变量和实参值之间的对应关系 while [ $1 ] do if [ -f $1 ] then echo "printing $1" pr $1|more else echo "$1 is not a name of a file" fi shift done
echo 参数1 参数2……
5.2.2 变量的访问及变量参数替换
单引号‘’:其中内容是字符串,没有 shell的特殊含义; 双引号“”:其中特殊字符作shell 含义解 释.使用双引号可引用除字符$(美元符号)、 `(反引号)、\(反斜线)外的任意字符或字符 串。双引号不会阻止shell对这3个字符作特 殊处理(标示变量名、命令替换、反斜线转 义) 反引号``:其中的命令可作为执行结果进行 赋值。
5.4.2 程序的控制结构
顺序
分支 循环
shell编程的基本知识 shell变量的使用 test命令的使用 shell程序的控制流 条件控制语句 循环控制语句 shell编程中常用的其他语句 shell程序的调试方法
5.5 条件控制语句
格式1
if 测试条件 then 命令表1 else 命令表2 fi