【shell】if常用判断|if目录是否为空|判断字符串包含关系|与或

本文详细介绍了Shell脚本中的if语句,包括[ ]和[[]]的区别、目录是否为空的判断、字符串包含关系的检查以及单引号和双引号的用法。还提供了多种字符串判断和数字比较的方法,以及文件存在的条件判断。文章适合想要深入理解Shell脚本条件控制的读者。
摘要由CSDN通过智能技术生成

目录

shell中[ ]和[[]]的区别

判断目录是否为空

判断字符串包含关系

if判断写成一行/命令行中用if

单引号和双引号的区别

if常用判断


作者:bandaoyu 持续更新,连接:http://t.csdn.cn/mVBjJ

shell中的if语句 https://blog.csdn.net/wxx_0124/article/details/95305625

shell中[ ]和[[]]的区别

探索shell中[ ]和[[]]的区别_chen1415886044的博客-CSDN博客

多数情况下[ ]和[[]]是可以通用的,单中括号 [ ],bash 的内部命令,[和test是等同的。双中括号[[ ]],[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。

[ ] 和 [[]]区别

[ ]中可用的比较运算符只有==和!=,可用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。

[[ ]] 支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ minger == ming? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

[[]]测试 []测试
< 排序比较 不支持
> 排序比较 不支持
&& 逻辑与 -a 逻辑与
== 模式匹配 ==字符匹配
=~正则匹配 不支持

判断目录是否为空

ls dirname
如果返回为空则目录为空
或者ls dirname|wc -l
如果结果为0则目录为空         

最简单的方法:用ls -A  $dir
好用的,测试过,对.file也能好用。

#!/bin/sh

#ifdirec

DIRECTORY=$1

#在此加上是不是目录的判断。

if [ "`ls -A $DIRECTORY`" = "" ]; then

  echo "$DIRECTORY is indeed empty"

else

  echo "$DIRECTORY is not empty"

fi

       shell 判断文件/目录是否为空_jfkidear的专栏-CSDN博客_shell判断文件夹是否为空

#判断文件目录是否为空

第一种:

emptydir.sh

-----------------------------------------------------------

#!/bin/sh
DIRECTORY=$1
if [ "`ls -A $DIRECTORY`" = "" ]; then
  echo "$DIRECTORY is indeed empty"
else
  echo "$DIRECTORY is not empty"
fi

-----------------------------------------------------------

第二种:

count.sh

-----------------------------------------------------------

#!/bin/sh
count=`ls $*|wc -w`
if [ "$count" > "0" ];
then
 echo "file size $count"
else
 echo "empty!"
fi

-----------------------------------------------------------

#目录是否存在

ifmkdir.sh

-----------------------------------------------------------

#!/bin/sh
dir="test"
if [ ! -d $dir ]; then
        echo "$dir not exists"
        mkdir "$dir"
else
        echo "$dir exists!"
fi

-----------------------------------------------------------

判断字符串包含关系

https://www.jb51.net/article/100490.htm

方法一:利用grep查找

1

2

3

4

5

6

7

8

9

strA="long string"

strB="string"

result=$(echo $strA | grep "${strB}")

if [[ "$result" != "" ]]

then

  echo "包含"

else

  echo "不包含"

fi

先打印长字符串,然后在长字符串中 grep 查找要搜索的字符串,用变量result记录结果

如果结果不为空,说明strA包含strB。如果结果为空,说明不包含。

这个方法充分利用了grep 的特性,最为简洁。

方法二:利用字符串运算符

1

2

3</

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值