当前位置:Linux教程 - Linux资讯 - 介绍几个shell程序设计小知识之三

介绍几个shell程序设计小知识之三

  一、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)