shell编程值之shell流程控制(7)

条件判断式

1 按照文件类型判断(常用类型)
测试类型 作用
-d 文件 判断该文件是否存在,并且是否为目录文件(是目录文件为真)
-e 文件 判断该文件是否存在(存在为真)
-f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真)
[-d /root] && echo 'yes' || 'no']

判断/root是否为一个目录,是打印yes不是打印no
2 两种判断格式
  test -e /root/install.log
  
  [-e /root/install.log]
2 两个文件之间进行比较
测试选项 作用
文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新(如果新为真)
文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧为真)
文件1 -ef 文件2 判断文件1是否和文件2 的inode好一直,可以理解为两个文件是否为通一个文件。这个判断用于判断硬连接是很好的方法
2 两个整数之间的比较
测试选项 作用
-eq 是否相等
-ne 是否不相等
-gt 是否大于
-lt 是否小于
-ge 是否大于等于
-le 是否小于等于
3 字符串的判断
测试选项 作用
-z 字符串 判断字符串是否为空
-n 字符串 判断字符串是否为非空
== 是否相等
!= 不相等
4 多重条件判断
测试选项 作用
判断1 -a 判断2 逻辑与,两个都为真,还为真
判断1 -o 判断2 逻辑或,有一个为真就为真
!判断 逻辑非,取反

单分支if语句

if [条件判断式]; then
    程序
fi

或者

if [条件判断式]
    then
    程序
fi
    

判断登陆的用户是否root

#!/bin/bash

test=$(env | grep "USER" | cut -d "=" -f2)

if ["$test" == root] 
    then
    echo 'user is root'
fi    

双分支if语句

if [条件判断式]
    then
        成立
    else
        不成立
fi
    

多分支if语句

if [条件判断式]
    then
        成立
elif [条件判断式2]
    then
        
else
        不成立
fi
    

case语句

case $变量名 in
    "值1")
        程序1
        ;;
    "值2")
        程序2
        ;;
    "值3")
        程序3
        ;;   
esac        

判断用户输入

#!/bin/bash

read -p 'please choose yes/no' -t 30 cho

case $cho in
    'yes')
        echo 'yes'
        ;;
    'no')
        echo 'no'
    *)
        echo $cho
        ;;
esac        

for循环

语法1
for 变量 in 值1 值2 值3 
    do
    
    done
    
语法2

for((初始值;循环控制条件;变量变化)) 
    do
        程序
    done

批量解压缩文件

#!/bin/bash

cd /root/test
ls *.tar.gz > ls.log
for i in $(cat ls.log)
    do
        tar -zxf $i &>/dev/null
    done
rm -rf /lamp/ls.log    

从1加到100

#!/bin/bash
s=0 
for((i=1;i<=100;i=i+1))
    do
        s=$(($s+$i))
    done    
    

while循环和util循环

从1加到100

#!/bin/bash
i=1
s=0
while [ $i -le 100 ]
    do
        s=$(($s+$i))
        i=$(($i+1))
    done
原文地址:https://www.cnblogs.com/chenjinxinlove/p/7147766.html