7退出测试判断及操作符
7退出、测试、判断及操作符 7.1、退出状态 每当命令执行完成后,系统都会返回一个退出状态,用一个整数值表示,用于判断命令运行 正确与否。最后一次执行命令的退出状态值被保存在内置变量“”中,可用echo语句测试 命令是否运行成功echo 退出状态及其含义 0表示运行成功,程序执行未遇到任何困难 1 125表示运行失败,脚本命令、系统命令错误或参数传递错误 126 找到了该命令但无法执行 127 未找到要运行的命令 128命令被系统强行结束 7.2、测试 Linux的Shell命令中存在一组测试命令,该组命令用于测试某种条件或某几种条件是否真实 存在。测试命令是判断语句和循环语句中条件测试的工具。 7.2.1、测试结构 测试命令可用于测试表达式的条件的真假。如果测试为真,贝庞回0;测试为假,则返回一 个非0整数值。 测试命令有两种方式 使用test命令进行测试,格式为test expression expression是一个表达式,可由数字、字符串、文本和文件属性的比较,同时可加入各种算 术、字符串、文本的等运算符。 为提高命令的可读性使用的另一种格式[expression ] 注意[后和]前的空格是必不可少的。该方式经常与if、case、while语句联用,作为流程控制 语句的判断条件。 7.2.2、整数比较运算符 test测试数值时有一整套的整数比较运算符,格式为 test numl numeric_operator num2 或 [“numl numeric_operator num2”] numeric_operator为整数比较运算符,用于比较数值的大小,但这些整数比较运算符不可用 于字符串、文件操作,而字符串比较运算符和文件操作符也不可用于其他的操作。 整数比较运算符 如果numl等于num2,测试结果为0 如果numl大于或等于num2,测试结果为0 如果numl大于num2,测试结果为0 如果numl小于或等于num2,测试结果为0 如果numl小于num2,测试结果为0 如果numl不等于num2,测试结果为0 numl -eq num2 numl -ge num2 numl -gt num2 numl -le num2 numl -It num2 numl -ne num2 在bash编程中只能对整数使用整数比较符,若想对浮点型数值进行比较,需使用特定的函 数。 723、字符串运算符 字符串运算符可用来测试字符串是否为空、两个字符串是否相等或是否不相等。经常用于测 试用户输入是否为空或比较字符串变量 测试字符串string是否不为空 测试字符串string是否不为空 测试字符串string是否为空 测试字符串stringl是否与字符串string2相同 测试字符串stringl是否与字符串string2不相同 字符串运算符 string -n string -z string stringlstring2 stringl string2 字符串比较时建议字符串变量要使用双引号,即使变量为空也要使用。 格式test string” 或 [stringlstring2”] 7.2.4、文件操作符 格式为 test file_operator file 或 [file_operator file ] file_operator为文件操作符,file为文件名、目录名或文件路径等。 比较常用的文件操作符 -d file -e file -ffile -rfile -s file -w file -x file -Lfile 测试file是否为目录 测试file是否存在 测试file是否为普通文件 测试file是否是进程可读文件 测试file的长度是否不为0 测试file是否是进程可写文件 测试file是否是进程可执行文件 测试file是否符号化链接 7.2.5、 逻辑运算符 逻辑运算符用于测试多个条件是否为真或为假,或使用逻辑非测试单个表达式,这些条件一 般是和测试命令联用。 如果expression为假,则测试结果为真 如果expl和exp2同时为真,则测试结果为真 如果expl和exp2中有一个为真,则测试结果为真 expression为一个表达式,该表达式描述了一个测试条件。 逻辑操作符 expression expl -a exp2 expl -o exp2 7.3、判断 7.3.1、简单if结构 最简单的if结构是if expression then command fi 测试条件后如果没有“;,则then语句要换行;如果if和then可以处于同一行,则必须用 “;”来终止if语句,格式为 if expression; then command fi 例/bin/bash echo Please a integer read integerl if [ integerl -It 15 ] then echo The integer which you is lower than 15. fi 7.3.2、exit 命令 命令格式为exit status status用0〜255之间的数字表示,一般返回该状态值的同时片伴随着脚本的退出。要注意 的是,不要在终端运行exit命令,否则将会导致系统重启。 例/bin/bash echo Please a string read strl if [ -z Sstrl] then echo What you is null exit 1 fi 当输入了一个空字符串,将执行then中的语句,返回一句话,同时返回一个退出状态为1, 该退出状态值是在脚本中设置的,不是系统默认的退出状态值。所以,在编写脚本时可以自 己设置退出状态值,不过特定的值一般都有其特定的退出状态含义,不要乱用,以免执行脚 本时产生误解。 7.3.3、if/else 结构 简单的if结构命令这种方式使得脚本的交互性很差,而if/else命令是双向选择语句,有很 好的交互性。then和else、else和fi中间的语句可以是单个命令,也可以是多个命令。其结 构为 if expressionl then command command else command command fi 例ifelse_exam 1 脚本 /bin/bash if [ -e 1] then echo file 1 do not exist. exit 1 else echo file 1 exits. fi 运行./ifelse_examl filename (文件名) 例/bin/bash echo P