快捷搜索:

介绍几个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

您可能还会对下面的文章感兴趣: