发布时间:2014-09-05 13:31:55作者:知识屋
条件测试
test 测试条件 测试内容
[测试条件 测试内容] #用的更为广泛
1 测试文件类型
test -e 文件名 测试文件是否存在,存在为真
[ -e 文件名 ] 注意:[]的左右两侧必须加空格!
附:test测试结果并不显示,需用echo$? 来显示test的返回值
返回0语句正确,非0表示不正确。
拓展:test -e test.txt && echo Yes || echo No
test -f 文件名 判断是否是普通文件#如果是文件的话,返回Yes,若是目录返回非No
test -d 文件名 判断是否为目录
test -b 文件名 判断是否为块设备文件
test -c 文件名 字符设备文件
2 测试文件权限
test -r 文件名 判断是否有可读权限
test -w 文件名 可写
test -x 文件名 执行
test -s 文件名 判断是否为非空白,有内容为真
3 两个文档比较
[file1 -nt file2 ] file1是否比file2新
[file1 -ot file2 ] file1是否比file2旧
[file1 -ef file2 ] file1与file2是否是链接文件,是否是快捷方式,软链接
4 两个数值之间判断
[n1 -eq n2 ] n1和n2是否相等#推荐使用下面的 ==符号来判断
测试:aa=123;bb=123
[$aa -eq $bb ] && echo Yes || echo no
[n1 -ne n2 ] n1和n2是否不等
[n1 -gt n2 ] n1大于n2
[n1 -lt n2 ] n1小于n2
[n1 -ge n2 ] n1大于等于n2
[n1 -le n2 ] n1小于等于n2
5 判断字符串
[-z 字符串] 判断字符串是否为空,变量值没有内容/为空则是真
[字符串1 == 字符串2] 判断字串1是否与字串2相等#判断采用的是字符串型
[$aa == $bb ] && echo 1 || echo 2
附:aa=abc
[“$aa” == “abc” ] && echo Yes || echo No #为什么把两个“”去掉测试也成功
[字符串1 != 字符串2] 判断字串是否不等
6 多重判断
-a 逻辑与
[-z $file -a -e $file ]
-o逻辑或
! 逻辑非
例子7:判断输入的文件类型和文件权限注:一定要练习
#!/bin/bash
echo-e "nide wenjian shifou cunzai? wenjian quanxian shi shenme?/n/n"
read-p "please input filename:" -t 30 filename
test-z $filename && echo "please input filename!!" &&exit 1
#判断字符串是否为空,如果为空,打印错误信息,并且退出程序!
test! -e $filename && echo "wenjian bucunzai!" &&exit 2
#-e 变量 判断文件是否存在,存在为真 ! 逻辑非
test-f $filename && filetype=putong
#-f 是否为普通文件
test-d $filename && filetype=mulu
#-d 是否为目录
test-r $filename && perm="read"
#-r是否有可读权限
test-w $filename && perm="$perm write"
#-w 是否可写
test-x $filename && perm="$perm executable"
#-x 是否可执行
echo-e "the filename is : $filename /n"
#打印文件名
echo-e "filetype is : $filetype /n"
#打印文件类型
echo-e "permision is : $perm /n"
#打印文件权限
多命令顺序执行
1)命令1 ; 命令2;命令3 命令123顺序执行。之间没有任何关系如:cd;ls ;date #date 用于打印当前系统时间
2)命令1 && 命令2 命令1正确执行后,命令2才会执行
3)命令1 || 命令2 命令1执行不正确,命令2才会执行,也就是说:如果第一个命令正确执行,那么第二个命令就不会执行了!
类test测试:
a)ls && echo "Yes" || echo "No"
b)ls skdjfkdj && echo "Yes" || echo "No"
lsaa && echo "cunzai" || echo "bu cunzai!" 执行ls aa,判断如果正确,输出“存在”。如果不存在,输出“不存在”
7 管道符:两个命令之间有联系,
命令1 | 命令2 命令1的执行结果,作为命令2的执行条件
注意:第一条命令一定得有输出
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能