本文共 1197 字,大约阅读时间需要 3 分钟。
最近在写脚本用到了if test去测试或者判断,发现里边东西挺多的,捡几个个人用到的写一下
if test 可以测试三种 字符 数字 文件
字符串比较 != 和 = 没有“==”符号
数字 -lt -gt -ne -le -ge 没有“>、<”符号
如果x=04 y=4 这样的测试会不一样的结果
if [ $x = $y ]与 if [ $x -ne $y ]为什么你肯定猜到了
测试比较 -z 测试是否是0个字符 -n 测试字符是否不为空
&& 如果是“前面”,则“后面”
[ -f /var/run/dhcpd.pid ] && rm /var/run/dhcpd.pid 检查 文件是否存在,如果存在就删掉
|| 如果不是“前面”,则后面
[ -f /usr/sbin/dhcpd ] || exit 0 检验文件是否存在,如果存在就退出
以上这两个是比较实用简单的写法
另外需要注意字符串比较的时候$String 一定要用引号引起来去比较:"$String" = "abc"for
好多人会碰到 sh: test:argument expected 就是因为变量为null然后进行比对了
第二注意就是[] 这个两边都要有空格,否则也会报错
传统if 从句子——以条件表达式作为
if条件
if [ 条件表达式 ]then
command
else
command
fi
条件表达式如下
文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
本文转自 aklaus 51CTO博客,原文链接:http://blog.51cto.com/aklaus/1766413
转载地址:http://cqfll.baihongyu.com/