- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux第七章选编
第七章;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程序设计风
文档评论(0)