一、if 条件语句 格式: if 条件表达式 then #当条件为真时执行以下语句 命令列表 else #为假时执行以下语句 命令列表 fi if 语句也可以嵌套使用 if 条件表达式1 then if 条件表达式2 then 命令列表 else if 条件表达式3 then 命令列表 else 命令列表 fi fi else 命令列表 fi 你可以进行多层嵌套 一个if语句一定要跟一个fi 表示该层条件结束 否则会造成语法错误结合前面讲的 举例如下: 这里先讲一个条件语句中用到的命令test 表示测试test后面的条件是否为真 if test -f "$1" then lpr $1 else if test -d "$1" then cd $1 lpr $1 else echo "$1不是文件或目录" fi fi 以上的例子还可以改成如下所示 if test -f "$1" then lpr $1 elif test -d "$1" #elif 同else if then (cd $1;lpr $1) else echo "$1不是文件或目录" fi 以上的例子不知您是否看懂是什么意思吗? 假如我们现在将这个例子保存为prfile chmod +x prfile 执行刚才的程序 ./prfile aaa 这个例子是检查你的输入的参数是否是一个文件 如果是就打印 如果是一个目录 先转目录再打印 如果即不是文件也不是目录给出提示
二、多重条件测试语句case 格式: case 字串 in 模式) 命令列表;; 模式) 命令列表;; .... esac 多重条件语句是以case 开始以esac结束 中间可以有多个条件列表 功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表 模式也可以是*号 表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。 现举例如下: case $1 in *.c) cc $1 ;; *.txt) lpr $1 ;; *) echo "未知的类型" esac 假如将以上内容保存在文件abc中 chmod +x abc 执行 ./abc a.c 将会对文件a.c进行编译 执行 ./abc readme.txt 将会把文件通过打印机 假如我将以上内容改一下,你是否会知道它的执行结果? case $1 in *) cc $1 ;; *.txt) lpr $1 ;; *.c) echo "未知的类型" esac
(出处:http://www.sheup.com)