条件测试操作

在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,让我们可以方便的完成判断。

语法格式

test 选项 文件名或目录名
[ 选项 文件名或目录名 ]
[[ 选项 文件名或目录名 ]]

[语法说明]

格式1: test <测试表达式>

格式2: [ test<测试表达式> ]

格式3: [[ test<测试表达式> ]]

说明:

格式1和格式2是等价的。格式3是扩展的test命令,有网友推荐格式3,老男孩习惯使用格式2

提示:

在[[]]中可以使用通配符进行模式匹配。&&、||、>、<等操作符可以应用于[[]]中,但不能应用于[]中。

对整数进行关系运算,也可以使用shell的算术运算符(())。

格式1:test <测试表达式>

范例1:test 测试文件

[root@localhost ~]# test -f file && echo true || echo false
false
[root@localhost ~]# touch file
[root@localhost ~]# test -f file && echo true || echo false
true

范例2:test命令非(!)的写法

[root@localhost ~]# test ! -f file && echo true || echo false
true
[root@localhost ~]# touch file
[root@localhost ~]# test ! -f file && echo true || echo false
false

格式2:[<测试表达式>]

范例:[]

[root@localhost ~]# rm -f file
[root@localhost ~]# [ -f file ] && echo || echo [root@localhost ~]# touch file
[root@localhost ~]# [ -f file ] && echo || echo [root@localhost ~]# [ ! -f file ] && echo || echo [root@localhost ~]# [ -f file ] && echo || echo [root@localhost ~]# [ ! -f file ] && echo || echo [root@localhost ~]# rm -f file
[root@localhost ~]# [ -f file ] && cat file
[root@localhost ~]# [ ! -f file ] && cat file
cat: file: 没有那个文件或目录

范例3:[[<测试表达式>]]

范例:[[]]

[root@localhost ~]# touch file
[root@localhost ~]# [[ ! -f file ]] && echo || echo [root@localhost ~]# [[ -f file ]] && echo || echo [root@localhost ~]# [[ -f file && -f folder ]] && echo || echo [root@localhost ~]# [ -f file && -f folder ] && echo || echo
bash: [: missing `]' [root@localhost ~]# [ -f file -a -f folder ] && echo || echo [root@localhost ~]# ls -l file
-rw-r--r--. root root 4月 : file
[root@localhost ~]# touch folder
[root@localhost ~]# [ -f file -a -f folder ] && echo || echo

例子1:

#!/bin/bash
test -e /file
if [ $? -eq ];then
echo "目录/file存在" else
echo " 目录/file不存在,现在为您自动创建"
mkdir /file
fi

例子:

#!/bin/bash
[ -e /file ]
if [ $? -eq ];then
echo "目录/file存在"
else
echo " 目录/file不存在,现在为您自动创建"
mkdir /file
fi

下面举一些条件测试的例子。为了清晰的显示测试结果,在屏幕上输出1(表示真)或0(表示假)表示测试结果

提示:这和前面的状态变量”$?”返回0为真不一样。

[root@localhost ~]# [ -f "$file1" ] && echo  || echo   #这是条件表达式的用法
[root@localhost ~]# if [ if "$file1" ];then echo ;else echo ;fi #这是if条件句的用法

提示:

.以上两条语句的功能是等同的
.变量$file加了双引号,可以防止很多意外的错误发生

test命令测试的用法

范例1:用test命令测试字符串

[root@localhost ~]# file1=/etc/services
[root@localhost ~]# test -z "$file1" || echo [root@localhost ~]# test -z "$file1" && echo || echo [root@localhost ~]# [ -z "$file1" ] && echo || echo [root@localhost ~]# test -n "$file1" && echo || echo

范例2:用test命令测试整数比较

[root@localhost ~]# test "dd" = "ff" && echo  || echo 

[root@localhost ~]# test "dd" = "dd" && echo  || echo 

[root@localhost ~]# test "dd" != "dd" && echo  || echo

结论:test命令测试的功能很强大,但是和[],[[]]之前都是重合的功能,因此,在实际工作中选择一种适合我们的语法就OK了,其他的语法,别人写的脚本可以阅读就可以了。

文件状态测试

语法格式

[操作符文件或目录]

操作符:

-e        判断对象是否存在(Exist),若存在则结果为真
-d      判断对象是否为目录(Directory),是则为真
-f     判断对象是否为一般文件(file),是则为真
-w     判断对象是否有可写(Write)权限 ,是则为真
-x        判断对象是否有可执行(eXcute)权限 ,是则为真
-r        文件存在且有读权限,为真
-s       若文件存在且不为空,则为真
-L       若文件存在且为链接文件则为真
-f1 -nt f2  若文件f1比文件f2新则为真
-f1 -ot f2  若文件f1比文件f2旧则为真

常用文件测试操作符的记忆方法

[root@localhost ~]# echo f=file
f=file
[root@localhost ~]# echo d=directory
d=directory
[root@localhost ~]# echo s=size
s=size
[root@localhost ~]# echo e=exist
e=exist
[root@localhost ~]# echo r=read
r=read
[root@localhost ~]# echo w=write
w=write
[root@localhost ~]# echo x=executale
x=executale
[root@localhost ~]# echo nt="newer than"
nt=newer than
[root@localhost ~]# echo ot="older than"
ot=older than
提示:不用纠结到底是不是全拼,只要有助于记忆就是好的方法

文件测试举例

首先定义file1和file2两个变量,并分别赋予两个系统文件路径及文件名的值。

[root@localhost ~]# file1=/etc/services;file2=/etc/rc.local #分号用于分隔两个命令
[root@localhost ~]# echo $file1 $file2
/etc/services /etc/rc.local

范例1:对单个文件的测试:

[root@localhost ~]# [ -f "$file1" ] && echo  || echo
#文件存在并且为普通文件所以为真() [root@localhost ~]# [ -d "$file1" ] && echo || echo
#是文件但不是目录所以为假() [root@localhost ~]# [ -s "$file1" ] && echo || echo
#文件存在且大小不为0,所以为真() [root@localhost ~]# [ -e "$file1" ] && echo || echo
#文件存在所以为真() [root@localhost ~]# dir1=/etc
[root@localhost ~]# [ -e "$dir1" ] && echo || echo [root@localhost ~]# [ -w /etc/services ] && echo || echo [root@localhost ~]# su - zgy
[zgy@localhost ~]$ [ -w /etc/services ] && echo || echo [zgy@localhost ~]$ ll /etc/services
-rw-r--r--. root root 10月 /etc/services

特殊例子:如果变量不加双引号,结果可能就不正确。

[zgy@localhost ~]$ [ -f "$file7" ]&& echo  || echo 

[zgy@localhost ~]$ echo $file7
[zgy@localhost ~]$ [ -f $file7 ]&& echo || echo
#说明$file7不存在还返回1 [zgy@localhost ~]$ [ -f "$file7" ]&& echo || echo [zgy@localhost ~]$ file7=/etc/hosts
[zgy@localhost ~]$ [ -f $file7 ]&& echo || echo [zgy@localhost ~]$ [ ! -f $file7 ]&& echo || echo [zgy@localhost ~]$ [ -f "$file7" ]&& echo || echo [zgy@localhost ~]$ [ ! -f "$file7" ]&& echo || echo

 

范例2:把变量内容换成文件实体

[zgy@localhost ~]$ [ -f /etc/service ] && echo  || echo 

[zgy@localhost ~]$ [ -f /etc/services ] && echo  || echo 

[zgy@localhost ~]$ [ -f "/etc/service" ] && echo  || echo 

[zgy@localhost ~]$ [ -f "/etc/services" ] && echo  || echo

范例3(生产):生产环境系统nfs启动脚本的条件测试的内容

[zgy@localhost ~]$ less /etc/init.d/nfs

# Source networking configuration.

[ -f /etc/sysconfig/network ] &&  . /etc/sysconfig/network

#如果/etc/sysconfig/network文件存在就加载文件

# Check for and source configuration file otherwise set defaults

[ -f /etc/sysconfig/nfs ] && . /etc/sysconfig/nfs  #如果/etc/sysconfig/nfs文件存在就加载文件

特别提示:系统脚本是学习编程的第一标杆。要参考,虽然有时也不是很规范。

范例4:读文件单中括号[]与或非测试

可用于(-a和&&)、或(-o和||)、非(!)将多个条件表达式连接起来,接着上面的变量测试。

[root@localhost ~]# file1=/etc/services;file2=/etc/rc.local

[root@localhost ~]# echo $file1 $file2

[root@localhost ~]# [ -f "$file1" -o -e "$file2" ] && echo  || echo 

[root@localhost ~]# [ -f "$file1" -a -e "$file2" ] && echo  || echo 

[root@localhost ~]#

[root@localhost ~]# [ -f "$file1" || -e "$file2" ] && echo  || echo 

-bash: [: missing `]'    #用法不对了,你知道哪里不对吗?

-bash: -e: command not found

提醒:

、”-a”和”-o”逻辑操作符用于[]中使用。

、“&&”和”||”逻辑操作符用于[[]]中使用

、注意括号两端,必须要有空格。

如果你很犟,非要单中括号加&&或||那就用如下方法:

[root@localhost ~]# [ -f "$file1" ] ||[ -e "$file2" ] && echo  || echo 

[root@localhost ~]# [ -f "$file1" ] &&[ -e "$file2" ] && echo  || echo 

范例5:双中括号多条件文件或非测试

[root@localhost ~]# [[ -f "$file1" || -e "$file2" ]] && echo  || echo 

[root@localhost ~]# [[ -f "$file1" && -e "$file2" ]] && echo  || echo 

[root@localhost ~]# [[ -e "$file1" -a -f "$file2" ]] && echo  || echo 

-bash: syntax error in conditional expression

-bash: syntax error near `-a'   #用法又不对了,你知道哪里不对吗?;有时候照葫芦画瓢也不行

[root@localhost ~]# [[ -f "$file1" ]] -a [[ -e "$file2" ]] && echo  || echo 

-bash: syntax error near unexpected token `-a'

系统案例:

[root@localhost ~]# less /etc/init.d/nfs

[ -n $RPCNFSDARGS -a "$NFSD_MODULE" != "noload" ] && {

[   -x /sbin/modprobe ] && /sbin/modprobe nfsd

}

范例6:系统bind启动脚本举例:named服务

范例7:简易高效的文件判断例子

在做测试判断时,不一定非要按照前面的方法。直接用后者做测试判断有时更简洁。

范例:

[zgy@localhost ~]$ file1=/etc/services

[zgy@localhost ~]$ [ -f "$file1" ] && echo  #条件成立返回1

[zgy@localhost ~]$ [ -f "$file3" ] || echo    #条件不成立返回0

系统范例:/etc/init.d/nfs

[root@localhost ~]# less /etc/init.d/nfs
[ -x /usr/sbin/rpc.nfsd ] || exit
[ -x /usr/sbin/rpc.mountd ] || exit
[ -x /usr/sbin/exportfs ] || exit

整数值比较

格式:

[整数值1 操作符 整数值2]

操作符:

-eq    等于(Equal)
-ge 大于或等于(Greater or Equal)
-gt 大于(Greater Than)
-le 小于或等于(Lesser or Equal)
-lt 小于(Lesser Than)
-ne 不等于(Not Equal)

提示:

)”<”符号意思是小于,例if[[ “$a”< “$b” ]];if [[ “$a”\< “$b” ]]。在单[]中需要转义,因为shell也用<和>重定向。
)”>”符号意思是小于,例if[[ “$a”>“$b” ]];if [[ “$a”\>“$b” ]]在单[]中需要转义,因为shell也用<和>重定向。
)”=”符号意思是等于,例if[[ “$a”=“$b” ]];if [[ “$a”“$b” ]]在单[]中不需要转义。

特别提示

经过实践,”=”和”!=”在[]中使用不需要转义,包含”>”和”<”的符号在[]中使用需要转义,对于不转义的结果未必会报错,但是结果可能不会对。

范例1:二元数字比较

[root@localhost ~]# [  >  ] && echo  || echo 

[root@localhost ~]# [  <  ] && echo  || echo 

    #这里的结果逻辑不对,条件不成立,应该返回0

[root@localhost ~]# [  \<  ] && echo  || echo 

   #转义后是正确的

[root@localhost ~]# [  \>  ] && echo  || echo 

[root@localhost ~]# [  -gt  ] && echo  || echo 

[root@localhost ~]# [  -lt  ] && echo  || echo 

[root@localhost ~]# [[  >  ]] && echo  || echo 

[root@localhost ~]# [[  <  ]] && echo  || echo 

[root@localhost ~]# [  =  ] && echo  || echo 

[root@localhost ~]# [  =  ] && echo  || echo 

[root@localhost ~]# [  !=  ] && echo  || echo 

提示:经过实践,”=”和”!=”在[]中石油不需要转移也可以。

[root@localhost ~]# [[  -lt  ]] && echo  || echo 

[root@localhost ~]# [[  -gt  ]] && echo  || echo 

范例2:二元字符比较

[root@localhost ~]# [ "a" > "bc" ] && echo  || echo 

[root@localhost ~]# [ "a" < "bc" ] && echo  || echo 

   #上面两个条件不一样,但结果是一样,虽然没报语法错误,但显然不对

[root@localhost ~]# [ "a" \> "bc" ] && echo  || echo 

[root@localhost ~]# [ "a" \< "bc" ] && echo  || echo 

   #加上对比较的转义后,逻辑上显示正确了

范例1:整数条件测试举例

[root@localhost ~]# a1=;a2=

[root@localhost ~]# [ $a1 -eq $a2 ] && echo  || echo 

   #条件不成立,返回0

[root@localhost ~]# [ $a1 -gt $a2 ] && echo  || echo 

[root@localhost ~]# [ $a1 -lt $a2 ] && echo  || echo 

[root@localhost ~]# [ $a1 -le $a2 ] && echo  || echo 

[root@localhost ~]# [ $a1 -ge $a2 ] && echo  || echo 

[root@localhost ~]# [ $a1 -ne $a2 ] && echo  || echo 

[root@localhost ~]# a=

[root@localhost ~]# b=

[root@localhost ~]# [ "$a" -ge "$b" ] && echo  || echo 

[root@localhost ~]# [ "$a" -le "$b" ] && echo  || echo 

范例2:直接通过数字运算符比较

[root@localhost ~]# [[ $a1 = $a2 ]] && echo  ||echo   #功能同上,条件不成立,返回0

[root@localhost ~]# [[ $a1 == $a2 ]] && echo  ||echo    #功能同上,条件不成立,返回0

[root@localhost ~]# (($a1>$a2)) && echo  || echo 

[root@localhost ~]# [ $a1 > $a2 ]&& echo  || echo   #没报错,但结果不对  

[root@localhost ~]# [ $a1 \> $a2 ]&& echo  || echo    #加转移或[[]]

[root@localhost ~]# [[ $a1 > $a2 ]] && echo || echo 

[root@localhost ~]# (( $a1<$a2 )) && echo  || echo 

[root@localhost ~]# (( $a1>$a2 )) && echo  || echo 

[root@localhost ~]# (( a1>a2 )) && echo  || echo 

[root@localhost ~]# (( a1<a2 )) && echo  || echo 

字符串比较

字符串测试操作符的作用:比较两个字符串是否相同、字符串长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串)等。

“=”比较两个字符串是否相同,与==等价,如if[ “$a” = “$b” ],其中$a这样的变量最好用””括起来,因为如果中间有空格,*等符号就可能出错了,当然更好的方法就是[ “${a}”=”${b}” ]。”!=”比较两个字符串是否相同,不同则为”是”。

字符串测试操作符提示:

)-n 比较字符串长度是否不为0,如果不为0则为真,如:[ -n “$myvar” ]

)-z 比较字符串长度是否等于0,如果等于0则为真,如[ -z “$myvar” ]

)特别注意,对于以上表格中的组非常测试操作符号,如[ -n “$myvar” ],要把字符串用””引起来。

格式1:

[字符串1 操作符 字符串2]

操作符:

==    测试是否相等,相等为真,不等为假
!= 测试是否不等,不等为真,等为假
> 测试是否大于,大于为真,不大于为假
< 测试是否小于,小于为真,不小于为假

格式2:

[操作符 字符串]

操作符:

-z    测试指定字符串是否为空,空为真,非空则为假
-n 测试指定字符串是否非空,非空则真,空则假(相当于!-z)

字符串测试操作符提示:

)-n 比较字符串长度是否不为0,如果不为0则为真,如:[ -n “$myvar” ]
)-z 比较字符串长度是否等于0,如果等于0则为真,如[ -z “$myvar” ]
)特别注意,对于以上表格中的组非常测试操作符号,如[ -n “$myvar” ],要把字符串用””引起来。

下面的$file并未定义,而$file1在上面测试中已定义

范例1:单条件字符串测试:

[root@localhost ~]# echo $file1 $file

/etc/services

[root@localhost ~]# [ -n "$file" ] && echo  || echo 

   #若串长度不为0则为真,因$file未定义长度为0,所以为假()

[root@localhost ~]# [ -z "$file" ] && echo  || echo 

    #若串长度为0则为真,因$file未定义长度为0,所以为真()

[root@localhost ~]# [ -z "$file1" ] && echo  || echo 

   #若串长度为0则为真,因$file1已定义长度,所以为假()

提示:去掉双引号看看

[root@localhost ~]# [ -z $file1 ] && echo  || echo 

[root@localhost ~]# [ -z $file ] && echo  || echo 

特别强调:字符串比较一定要加双引号

范例2:系统脚本/etc/init.d/nfs字符串测试的应用:

[ -z "$MOUNTD_NFS_V2" ] && MOUNTD_NFS_V2=default

 [ -z "$MOUNTD_NFS_V3" ] && MOUNTD_NFS_V3=default

 # Number of servers to be started by default

 [ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=

范例3:多条件字符串测试:

[zgy@localhost ~]$ echo $file1 $file2

/etc/services /etc/rc.local

[zgy@localhost ~]$ [ -z "$file1" ] && echo  || echo 

[zgy@localhost ~]$ [ -z "$file1" -a -z "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [[ -z "$file1" && -z "$file2" ]] && echo  || echo 

[zgy@localhost ~]$ [[ -z "$file1" || -z "$file2" ]] && echo  || echo 

[zgy@localhost ~]$ [[ -z "$file1" || -n "$file2" ]] && echo  || echo 

[zgy@localhost ~]$ [ -z "$file1" -o -z "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ -n "$file1" -o -z "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ "$file1" = "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ "$file1" == "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ "$file1" !== "$file2" ] && echo  || echo 

-bash: [: !==: binary operator expected

[zgy@localhost ~]$ [ "$file1" != "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ ! "$file1" == "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ ! "$file1" \> "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [ ! "$file1" \< "$file2" ] && echo  || echo 

[zgy@localhost ~]$ [  "${#file1}" = "${#file2}" ] && echo  || echo 

[zgy@localhost ~]$ [ "${#file1}" != "${#file2}" ] && echo  || echo 

[zgy@localhost ~]$ [ "${#file1}" \< "${#file2}" ] && echo  || echo 

[zgy@localhost ~]$ echo ${#file1}

[zgy@localhost ~]$ echo ${#file2}

范例4:字符串测试bind系统启动脚本举例:named

if [ -n "$ROOTDIR" ]; then

   ROOTDIR=`echo $ROOTDIR | sed 's#//*#/#g;s#/$##'`;

   rdl=`/usr/bin/readlink $ROOTDIR`;

   if [ -n "$rdl" ]; then

      ROOTDIR="$rdl";

   fi;

fi

逻辑运算符:与、或、非

逻辑运算符

a        逻辑与;比较的多个条件要同时成立 才为真
o 逻辑或;比较的多个条件,只要有一个条件成立就为真
! 逻辑非;如果表达式为假,则测试结果为真

提示:

!中文意思是反:与一个逻辑值相反的逻辑值
-a 中文意思是与(and &&):两个逻辑值都为“真”,返回值才会“真”,反之为“假”。
-o 中文意思是或(or ||):两个逻辑值只要有一个为“真”,返回值就会“真”。

逻辑操作符运算规则

结论:-a &&的运算规则:只有两端都为1才为真
真1 假
--------------
and *= 假
and *= 假
and *=
and *=
只有两端都为1才为真
结论:-o ||的运算规则:只有两端都为0才为假,任何一端不为0都为真
or += 真
or += 真
or += 真
or += 假
两端都为0才为假,不为0就是真

范例1:&&和-a 与逻辑符脚本例子

#!/bin/bash

echo -n "请输入两个数字[格式为:m n]" :

read m n

#第一种写法

if [ ${m} -eq  ] && [ ${n} -eq ];then

    echo "good"

else

   echo "bad"

fi   

#第二种写法

if [ ${m} -eq    -a ${n} -eq ];then

    echo "good"

else

   echo "bad"

fi   

#第三种写法

if [[ ${m} -eq    && ${n} -eq ]];then

    echo "good"

else

   echo "bad"

fi   

&&和-a与逻辑符写法总结如下:

#第一种写法
if [ "${a}" = "a" ] && [ "${b}" = "b"];then #第二种写法
if [ "${a}" = "a" -a "${b}" = "b"];then #第三种写法
if [[ "${a}" = "a" && "${b}" = "b"]];then #下面的写法不对
#if (("${a}" ="a" -a "${b}" = "b"));then

范例2:||和-o或逻辑符的脚本例子

[root@localhost ~]# echo $file1 $file2

/etc/services /etc/rc.local

[root@localhost ~]# [[ -z "$file1" || -z "$file2" ]]&& echo  || echo 

[root@localhost ~]# [[ -z "$file1" || -n "$file2" ]]&& echo  || echo 

[root@localhost ~]# [[ -z "$file1" || -n "$file2" ]] && echo  || echo 

[root@localhost ~]# [ -z "$file1" -o -z "$file2" ] && echo  || echo 

[root@localhost ~]# [ -n "$file1" -o -z "$file2" ] && echo  || echo 

范例3:!非逻辑符的例子

[root@localhost ~]# [ ! "$file1" = "$file2" ] && echo  || echo 

[root@localhost ~]# [ ! -z "$file1" || -n  "$file2" ] && echo  || echo 

-bash: [: missing `]'

-bash: -n: command not found

[root@localhost ~]# [[ ! -z "$file1" || -n  "$file2" ]] && echo  || echo 

[root@localhost ~]# [[ ! -z "$file1" || ! -n  "$file2" ]] && echo  || echo 

[root@localhost ~]# [[ ! -z "$file1" && ! -n  "$file2" ]] && echo  || echo 

4:利用read和cat打印选择菜单

单级菜单

[root@localhost ~]#cat menu.sh

menu() {

    cat <<END

.[install lamp]

.[install lnmp]

.[install nfs]

.[install rsync]

please input the num that you want:

END

}

menu

read a

echo "you selected $a"

多级菜单

[root@localhost ~]#cat multi_menu.sh

cat <<END

.[install lamp]

.[install lnmp]

.[install nfs]

.[install rsync]

please input the num that you want:

END

read a

[ $a -eq  ] &&{

cat <<END

[.install apache]

[.install mysql]

[.install php]

END

}

read b

echo "you want to install $b.apache"

四 Shell条件测试的更多相关文章

  1. shell条件测试test

    shell条件测试可以通过以下两种方式: test   参数    测试内容 [ 参数  测试内容 ] 一.测试文件类型: test  -e   文件名          (测试文件是否存在) [ - ...

  2. shell条件测试语句实例-测试apache是否开启

    终于理解了shell条件测试语句"!="和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/ ...

  3. 【转】shell学习笔记(四)——条件测试

    1 test 条件检测 当我要检测系统上面某些文件或者是相关的属性时,利用 test 这个命令来工作真是好用得不得了, 举例来说,我要检查 /home/oracle/zy是否存在时,使用: test ...

  4. 【第四章】Shell 条件测试表达式

    shell中条件测试的三种格式: 格式1: test 条件表达式格式2: [ 条件表达式 ]格式3: [[ 条件表达式 ]] 使用test: [root@host- ~]# test -f file ...

  5. shell条件测试和流程控制

    一.条件测试操作 1.test 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值 格式:test 表达式 2.常见的测试类型 ①测试文件状态 格式:[ 操作符 文件 ...

  6. bash Shell条件测试

    3种测试命令: test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]]  注意:EXPRESSION前后必须有空白字符 bash的测试类型 数值测试: -eq: ...

  7. shell条件测试结构

    条件测试结构 if/then结构用来判断命令列表的退出状态码是否为0(因为在UNIX惯例, 0表示"成功"), 如果成功的话, 那么就执行接下来的一个或多个命令. 有一个专有命令[ ...

  8. shell条件测试

    文件状态测试-b filename : 当filename 存在并且是块文件时返回真(返回0)-c filename : 当filename 存在并且是字符文件时返回真-d pathname : 当p ...

  9. 《shell条件测试语句,字符串测试apache是否开启》

    还得我想了10分钟才明白”!=“和"-n"的用法区别,做个笔记捋一捋 第一种方法:测试apache是否开启?字符串测试 #!/bin/bash web=`/usr/bin/pgre ...

随机推荐

  1. Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来

    Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来 要了解一个新知识我们可以从三个方面入手:是什么,有什么用,怎么用.下面我们就从这三个方面进行讲解Reveal.js噢 ...

  2. HDU4734 F(x) 题解 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题目大意: 对于一个 \(n\) 位十进制数 \(x\) (\(A_nA_{n-1}A_{n-2 ...

  3. web(www)服务器搭建Redhat5.4

    WWW服务概念及服务原理 目前,在Internet上最热门的服务之一就是WWW (World Wide Web)菔务,til^^Web服务.通过WWW触务,岢在Internet 或企业内部网络中传播. ...

  4. 用实例理解设计模式——代理模式(Python版)

    代理模式:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式分为: 静态代理 动态代 ...

  5. [转]Linux制作启动盘

    假设你想备份一个叫做 /home/joeuser/ 的目录,但是不想包括子目录 /home/joeuser/junk/,因为其中包括的都是不必要的文件.你想创建一个叫做 backup.iso 的映像, ...

  6. eclipse maven工程错误总汇

    1.问题: Target runtime Apache Tomcat v7.0 is not defined 解决方法:           right click on your project & ...

  7. Deferred shading rendering path翻译

    Overview 概述 When using deferred shading, there is no limit on the number of lights that can affect a ...

  8. JS中使用FormData上传图片

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  9. 测试工具Fiddler(二)—— 入门使用

    Fiddler设置与安装证书 一.Fiddler常见设置 Options位置:Tools->Options 二.移动端连上Fiddler作为代理 注意:因为Charles也是默认8888端口,小 ...

  10. background-position和position

    1.background-position:表示背景定位的属性.描述属性值时,有两种方式:一是像素描述:而是单位描述. (1)像素描述: 格式如下: background-position:向右偏移量 ...