文档详情

Linux第七章选编.ppt

发布:2017-04-21约9.49千字共72页下载文档
文本预览下载声明
第七章;7.1 shell编程的意义;7.2 什么时候不适合使用shell?;7.3 shell 的创建;;7.4 shell变量;;#!/bin/sh myvar=”hello” echo $myvar echo “$myvar” echo ‘$myvar’ echo \$myvar exit 0 输出: hello hello $var $var;运行脚本程序主要有三种办法: 1、bash(或sh) 程序名 2、./程序名 3、点(.)程序名 ;;;;;;;;;;7.5 shell的控制结构 7.5.1 条件与test命令 在程序设计语言中,作出决策的结构称为条件。在高级语言中决策的作出是依赖于基本运算的结果;在shell语言中,作出决策所依赖的条件是所执行命令的“出口状态”。 当shell命令或程序执行成功时,它返回一个“零”出口状态(即$?为零);如果执行的命令或程序出错时,则返回一个“非零”的出口状态(即$?不为零)。 除了一般命令的出口状态外,UNIX还提供了两个命令true和false的出口状态。true的出口状态为零;而false的出口状态为非零。shell将true和false命令作为恒真和恒假条件使用。;例: 判断所给出的参数是否为一个目录。 $cat check.dir test -d $1 echo ″ $1 is a dictory ″ exit 0 echo ″ $1 is not a dictroy ″ exit 1 在上例中,使用了exit命令。它是一个shell的内部命令,用于终止shell程序的执行。该命令可带一个定义出口状态值的自变量。 例: exit(0): 终止程序的执行,并返回零值; exit(1)或exit(x): 终止程序的执行,并返回非零值; 将命令返回零出口状态称为返回“真值”; 将命令返回非零出口状态称为返回“假值”。;1. test命令 test命令是shell程序设计的条件判断中最常用的测试命令,它有两种等价的格式: test expression或[expression](注意:[ ]中的空格) 其中expression就是要测试的条件。如果test计算expression的结果为真,则返回“零”出口状态,否则返回“非零”出口状态。test命令可用于对字符串、整数及文件进行各类测试。;字符串比较运算符;2. test字符串测试表达式 例1: 两个字符串进行比较 $ user=smith $ test ″$user″= smith $ echo $? 0 $ test ″$user″ = tom $ echo $? 1;例2: 带有空格的字符串比较 $ month=″January ″ $ test ″$month″ = January $ echo $? 1 $ test $month = January $ echo $? 0 注意: shell在处理变量时,遇到有双引号将保留其内容,而省略双引号时,将滤去空格。;例3: 带有空格的字符串比较 $ a=″testing string″ $ test ″$a″ = ″testing string″ $ echo $? 0 $ test $a = ″testing string″ test: unknown operator string shell处理变量 $a 时,将其进行变量替换,然后将结果(testing string)传递给test,而test将string作为操作符来处理,因此出错。;例4: 带有空串(或未设置的字符串比较) $ name= $ test ″$name″ = smith $ echo $? 1 $ test $name = smith 出错! shell处理变量$name时,双引号将其括起的内容作为一个“位置持有者”来保留,并把该值传递给test,保证处理的正常执行。;例5: 带有空串的字符串比较 $ blanks=″″ $ test $blanks $ echo $? 1 $ test ″$blanks″ $ echo $? 0 shell处理变量$blanks时,将空格滤去,使其变为空串传递给test;而双引号保留 “位置持有者”的位置,其值为一个空格(空白符),传递给test。;3. 使用test测试字符串时要注意的问题 (1) 向test 传递的各自变量之间必须有空白字符,如果“=”与任一自变量之间没有空白字符就会产生错误。 (2) 在使用变量的值替换的自变量上,用双引号括起来十分必要,以保证test在变量的值为空时也能接收到该自变量,这是一种良好的shell程序设计风
显示全部
相似文档