常用的shell逻辑运算

标签: shell

shell逻辑运算符

1. 关于档案与目录的侦测逻辑卷标!
-f 常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d 常用!侦测『目录』是否存在
-b 侦测是否为一个『 block 档案』
-c 侦测是否为一个『 character 档案』
-S 侦测是否为一个『 socket 标签档案』
-L 侦测是否为一个『 symbolic link 的档案』
-e 侦测『某个东西』是否存在!
2. 关于程序的逻辑卷标!
-G 侦测是否由 GID 所执行的程序所拥有
-O 侦测是否由 UID 所执行的程序所拥有
-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
3. 关于档案的属性侦测!
-r 侦测是否为可读的属性
-w 侦测是否为可以写入的属性
-x 侦测是否为可执行的属性
-s 侦测是否为『非空白档案』
-u 侦测是否具有『 SUID 』的属性
-g 侦测是否具有『 SGID 』的属性
-k 侦测是否具有『 sticky bit 』的属性
4. 两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt 第一个档案比第二个档案新
-ot 第一个档案比第二个档案旧
-ef 第一个档案与第二个档案为同一个档案( link 之类的档案)
5. 逻辑的『和(and)』『或(or)』
&& 逻辑的 AND 的意思
|| 逻辑的 OR 的意思
6. 运算符号
= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
!= 不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串
> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
-z 空字符串
-n 非空字符串

判断字符串是否为空

#!/bin/bash

str1=""

function isStrNull {
    [[ ! -n "$1" ]] && echo 'ture'
}

isStrNull $str1

这里写图片描述
判断字符串相等

#!/bin/bash

str1="str1"
str2="str2"
str3="str1"

function comparison {
    if [ "$1" == "$2" ]; then
        echo "true"
    else
        echo "false"
    fi
}

comparison $str1 $str2
comparison $str1 $str3

这里写图片描述
判断文件是否存在

#!/bin/bash

basePath=$(cd `dirname $0`; pwd)
filePath="${basePath}/file.txt"

function isFileExist {
    if [ ! -f "$filePath" ]; then
        echo "false"
    else
        echo "true"
    fi
}

isFileExist
touch $filePath
isFileExist

这里写图片描述
for循环输出

#!/bin/bash

echo "in:"
for i in {1..10}
do
    echo $i
    i=$[ $i + 1 ]
done

echo "i ++:"
for ((i=1; i<=10; i ++))
do
    echo $i  
done

echo "seq:"
for i in `seq 1 10`
do
    echo $i  
done

这里写图片描述
while循环计算1到100之间所有奇数之和

#!/bin/bash

i=1
sum=0
while [ $i -le 100 ]
do
  let sum=sum+$i
  let i+=2
done

echo $sum

这里写图片描述

原文链接:加载失败,请重新获取