Linux教程

linux(七)—shell 条件判断的语句,文件,字符串,数字判断

本文主要是介绍linux(七)—shell 条件判断的语句,文件,字符串,数字判断,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1:条件判断语法格式

    格式1:test条件表达式

    格式2:[ 条件表达式 ]

    格式3:[[ 条件表达式 ]] 支持正则 =

   注释:通过 man test 查看test表达式的条件判断

2:判断文件类型 (以下是常用)

     -e    判断文件是否存在

     -f    判断文件是否存在并且是个普通的文件

    -d    判断文件是否存在并且是个目录

    -L    判断文件是否存在并且是个软连接

    -b    判断文件是否存在并且是个设备文件

    -S    判断文件是否存在并且是个套接字文件

    -c     判断文件是否存在并且是字符设备文件

    -p    判断文件是否存在并且是命名管道文件

    -s     判断文件是否存在并且是个非空文件(有内容)

2:判断文件权限 (以下是常用)

     -r       当前用户是否可读

    -w       当前用户对其是否可写

    -x        当前用户对其是否可执行

    -u        是否有suid  高级权限冒险位

    -g        是否sgid 高级权限强制位

    -k         是否有t位 高级权限粘滞位 控制删除的

3:判断文件的新旧

    file1 -nt file2           比较file1是否比file2新

    file1 -ot file2           比较file1是否比file2旧

    file1 -ef file2           比较是否为同一个文件 或者用于判断硬连接 是否指向同一个inode 节点

4:判断整数

    -eq            相等

    -ne            不等

    -gt             大于

    -lt               小于

    -ge             大于等于

    -le              小于等于

5:判读字符串

    -z                 判断是否为空字符串 字符串长度为0则成立

    -n                判断是否为非空字符串 字符串长度不为0则成立

  str1 = str2     判断字符串是否相等

  str1 != str2    判断字符串是否不等

6:多重panduan

   -a 和 &&  都是 逻辑与 

     使用 -a [ 1 -eq 1 -a 1 -ne 0 ] 

     使用 && [ 1 -eq 1 ] && [ 1 -ne 0]

综合实战:

例题1:1:在 /home/shell 文件目录中传教一个 test04 文件目录,

             2:在test04目录中 创建 test1.txt 和test2.txt 文件 将二个文件中

             3:写入 我是测试test1.txt 和 我是test2.txt

             4:在/home/shell 目录中创建 test04.sh

             5:编写脚本内容如下:

                 5.1:输出 test04文件是否存在,

                 5.2:输出test04 文件存在并且是个目录

                 5.3:判断test04/test1.txt 是否存在

                 5.4:判断test04/test2.txt 是否是有内容

                 5.5:当前用户是否有可执行test04.sh的权限

                 5.6:比较text1.txt和test2.txt 新旧

                 5.6:定义2个变量 str1="hellworld" 和str2="hellowold" 

                        判断str1和str2 是否相等

              以上脚本内容如下:

      

#!/bin/env bash

# Author:lvdqiang
# Desc:测试文件判断
# Using:执行命令1:chmod +x /home/shell/test04.sh 
#        执行命令2:/home/shell/test04.sh

# 判断文件是否存在
echo "-----------判断test04文件是否存在----------"
test -e /home/shell/test04
A=$(echo $?)
if [ $A -eq 0 ]
 then
    echo "存在"
else
    echo "不存在"
fi

echo "-----------判断test04是否存在并且是个目录----------"
test -d /home/shell/test04
B=$(echo $?)
if [ $B -eq 0 ]
 then
    echo "是目录"
else
    echo "不是目录"
fi

echo "-----------判断test04/test1.txt是否存在----------"
test -f /home/shell/test04/test1.txt
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "是存在"
else
    echo "不存在"
fi


echo "-----------判断test04/test1.txt是否存在内容----------"
test -s /home/shell/test04/test1.txt
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "是存在"
else
    echo "不存在"
fi

echo "-----------判断test04/test2.txt是否存在内容----------"
test -s /home/shell/test04/test2.txt
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "是存在"
else
    echo "不存在"
fi

echo "-----------判断test04.sh是否有执行权限----------"
test -x /home/shell/test04.sh
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "是存在"
else
    echo "不存在"
fi

echo "-----------判断test1.txt是否比test2.txt新----------"
test /home/shell/test04/test1.txt -nt /home/shell/test04/test2.txt
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "新"
else
    echo "不新"
fi

str1="hellworld"
str2="helloworld"

echo "-----------str1="hellworld" 和str2="hellowold" 

                        判断str1和str2 是否相等----------"
test str1 = str2 
C=$(echo $?)
if [ $C -eq 0 ]
 then
    echo "相等"
else
    echo "不相等"
fi

以上执行结果如下图:

 

这篇关于linux(七)—shell 条件判断的语句,文件,字符串,数字判断的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!