资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: 计算机考试归档 最新发布

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]

7:[ ] 和 [[ ]] 的区别

       1: [ $B = hello ]  会报错 [[ $B = hello ]] 不会报错  总结 [[ ]] :可以判空

       2:[ -e test1 -a -L test1 ];  [[ -e test1 && -L test1 ]]  总结 -a 需要[ ]  && 必须要 [[ ]]

综合实战:

例题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

以上执行结果如下图:

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/510705.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【linux(七)—shell 条件判断的语句,文件,字符串,数字判断】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2