"与列表(andlist)"和"或列表(orlist)"结构提供一种处理一串连续命令的方法.它们能有效地替代复杂的嵌套if/then语句甚至可以代替case语句.连接命令与列表(andlist) 1command-1&&command-2&&command-3&&...command-n 如果每个命令都返回真值(0)将会依次执行下去.当某个命令返回假值(非零值),整个命令链就会结束执行(第一个返回假的命令将会是最后一个执行的命令,后面的都不再执行).例1.使用"与列表(andlist)"来测试命令行参数 1#!/bin/bash 2#"andlist" 3 4if[!-z"$1"]&&echo"Argument#1=$1"&&[!-z"$2"]&&echo"Argument#2=$2" 5then 6 echo"Atleast2argumentspassedtoscript." 7 #所有连接起来的命令都返回真. 8else 9 echo"Lessthan2argumentspassedtoscript." 10 #整个命令列表中至少有一个命令返回假值. 11fi 12#注意"if[!-z$1]"可以工作,但它是有所假定的等价物, 13# if[-n$1]不会工作. 14# 但是,加引用可以让它工作. 15# if[-n"$1"]就可以了. 16# 小心! 17#最好总是引起要测试的变量. 18 19 20#这是使用"纯粹"的if/then语句完成的同等功能. 21if[!-z"$1"] 22then 23 echo"Argument#1=$1" 24fi 25if[!-z"$2"] 26then 27 echo"Argument#2=$2" 28 echo"Atleast2argumentspassedtoscript." 29else 30 echo"Lessthan2argumentspassedtoscript." 31fi 32#这会更长且不如"与列表"精致. 33 34 35exit0 例2.用"与列表"的另一个命令行参数测试 1#!/bin/bash 2 3ARGS=1 #期望的参数个数. 4E_BADARGS=65 #如果用户给出不正确的参数个数的退出码. 5 6test$#-ne$ARGS&&echo"Usage:`basename$0`$ARGSargument(s)"&&exit$E_BADARGS 7# 如果条件1测试为真(表示传给脚本的参数不对), 8#+则余下的命令会被执行,并且脚本结束运行. 9 10#下面的代码只有当上面的测试失败时才会执行. 11echo"Correctnumberofargumentspassedtothisscript." 12 13exit0
上一篇:数组_程序数据_shell
下一篇:不使用局部变量的递归_程序数据_shell