HI END


一种永不妥协,追求极致与完美的精神与态度。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

shell 条件测试的写法

Posted on 2012-08-04 11:51  HI END  阅读(333)  评论(0编辑  收藏  举报

条件测试的写法,有以下10种。

执行某一个命令的结果

这里的命令,可包括管道命令,例如:命令1|命令2|命令3,其结束状态为最后一个命令的执行结果。

例如:

#!/bin/bash

if grep -q "rm" fn.sh; then

  echo "find rm command."

else

  echo "not find."

fi

在这个例子中,grep -q "rm" fn.sh,它是寻找fn.sh文件里是否含有关键词rm。选项-q表示不显示,仅借助$?来传回执行结果。

传回某一命令执行结果的相反值

其形式为: ! 命令。

例如:

#!/bin/bash

if ! rep -q "rm" fn.sh; then

  echo "find rm command."

else

  echo "not find."

fi

 

使用符合命令:((算式))

((0)) ((1)) ((0&&1))

 

使用Bash关键词"[["、"]]"组成的句子:[[判断式]]

例如:

#!/bin/bash

if [[str>xyz]];then

  echo "字符串str比较大"

else

  echo "字符串str比较小"

 fi

 

使用内置命令:test 判断式

#!/bin/bash

if test "str" \> "xyz"; then

  echo "字符串str比较大"

else

  echo "字符串str比较小"

fi

 

使用内置命令:[]

其形式为:[判断式]

[]和test的用法是相同的,两者可改写互换。

#!/bin/bash

if["str" /> "xyz"];then

  echo "字符串str比较大"

else

  echo "字符串str比较小"

fi

 

使用 -a、-o进行逻辑组合:

[-r filename1 -a -x filename]

如果filename1可读且可执行,则为真。-a 即"且"之意。

[-r filename1 -o -x filename]

 

如果filename1可读或可执行,则为真。-o 即"或"之意。

 

命令1 && 命令2

 &&称为逻辑的AND,如果“命令1”执行结果为真,才会执行“命令2”;

例如:

#/bin/bash

a=20

if grep -q "rm" fn.sh && [$a -lt 100] ; then

  echo "ok"

else

  echo "not ok"

fi

 

&&的特性,经常拿来当作是一种隐形的if语法。

例如:

[-z "$PS1"]  && return

它等效于:

if[-z "$PS1"] ; then

  return

fi

 

命令1 || 命令2

||被称为逻辑的OR,其运作方式是:如果“命令1”执行结果为假,才会执行“命令2”;