shell基础知识【判断&循环篇】

【判断方式】

1、if命令


 

if判断类型单分支结构双分支结构多分支结构
命令格式

if [condition];then

   COMMAND

fi

if [condition];then

   COMMAND

else

   COMMAND

fi

if [condition];then

   COMMAND

elif [condition]

   COMMAND

else

    COMMAND

fi

2、test判断

命令格式:test [option] object ,就是 test [选项] 对象

test -f pass.txt  #判断文档pass.txt是否是文档,若是则命令返回值为0,若不是则命令返回值非0
echo "$?"
0

3、[[option] filename]

此种方式一般用来进行文件判断,可搭配的选项有

-e 文件 :判断文件是否存在,存在则为真

-f 文件 :判断文件是否存在,并且文件为普通文件

-d 文件 :判断文件是否存在,并且文件为目录文件

-r 文件 :判断文件是否存在,并且是否拥有可读权限

-w 文件:判断文件是否存在,并且是否拥有可写权限

-u 文件:判断文件是否存在,并且是否拥有SUID权限

-g 文件:判断文件是否存在,并且是否拥有SGID权限

-k 文件:判断文件是否存在,并且是否拥有SBit权限

【注意SUID、SGID、Sbit权限均为文档的特殊权限位】

[ -r pass.txt ]
echo "$?"
0

4、两文件之间进行比较

文件1 -nt 文件2  >判断文件1的修改时间是否比文件2新

文件1 -ot 文件2 >判断文件1的修改时间是否比文件2晚

文件1 -ef 文件2  >判断两个文件的Inode号是否一致 【这个常用于判断硬链接的好方法】

 

5、整数之间的判断

整数之间判断-eq-ne-gt-lt-gele
命令相等不相等大于小于大于等于小于等于

6、字符串的判断

-z string  >判断字符串是否为空,为空则返回真

var1=CentOS7.0
if [ -z $var1 ];then echo "111"; else echo "2222"; fi
2222

-n string  >判断字符串是否为非空,非空返回真

var1=CentOS7.0
if [ -n $var1 ];then echo "111"; else echo "2222"; fi
111

string1 == string2 >判断两字符串是否相等,相等返回真

var1=abc
var2=bcd
if [ $var2 == $var1 ];then echo "111"; else echo "2222"; fi
2222

string1 != string2 >判断两字符串是否相等,不相等返回真

var1=abc
var2=bcd
if [ $var2 == $var1 ];then echo "111"; else echo "2222"; fi
111

7、多重判断

【逻辑与】

判断1 && 判断2  >逻辑与,判断1和判断2都成立,结果为真

if [ 1 -lt 2 ] && [ 4 -gt 3 ];then echo "111"; else echo "222"; fi
111

[ 判断1 -a 判断2 ] >逻辑与,判断1和判断2都成立,结果为真

if [ 1 -lt 2 -a 4 -gt 3 ];then echo "111"; else echo "222"; fi
111

【逻辑或】

判断1 || 判断2  >逻辑与,判断1和判断2中有1个或以上成立,结果为真

if [ 1 -lt 2 ] || [ 4 -gt 3 ];then echo "111"; else echo "222"; fi
111

[ 判断1 -a 判断2 ] >逻辑与,判断1和判断2中有1个或者以上成立,结果为真

if [ 1 -lt 2 -o 4 -gt 3 ];then echo "111"; else echo "222"; fi
111

【逻辑非】

!判断

if [ ! 1 -lt 2 ];then echo "111"; else echo "222"; fi
222

8、流程判断语句case

命令格式:

case 变量 in 

1)

    COMMAND;;

2)

    COMMAND;;

...

*)

   COMMAND;;

esac

case $num in
1)
        date +%F;;
2)
        ls;;
3)
        who;;
4)
        pwd;;
*)
        echo "Usage:[1|2|3|4]";;
esac

【循环方式】

1、for循环

for命令格式

for 自定义变量 in 变量集

do

   COMMAND

done

for ((i=1;condition;i++))

do

   COMMAND

done

实例
declare -i sum=0
for i in `seq 100`
do
        num=$[$i%3]
        if [ $num -eq 0 ];then
                sum=$[$sum+$i]
        else
                echo "$i can not bei 3 zhengchu!!"
        fi
done
echo "======="
echo "$sum"

 

num=5
for ((i=1;i<=num;i++))
do
        echo "$i"
done

 

2、while循环

命令格式:

while [condition]

do

    COMMAND

done

while :   ##此处无条件,若while内部没有退出命令,如break、exit;则循环会一直进行
do
        read -p "Please input a num:" num
        if [ $num = 'quit' ];then
                echo "quiting!"
                break
        else
                echo "111"
        fi
done
echo "323232"

 

3、until [ conditon ]

do

COMMAND

done

read -t 5 -p "Please input a number: " str
until [ $str = 'end' ]
do
        read -t 5 -p "Please input a number: " str
done

【注意:until语句,无论条件判断是什么,最少执行一次循环体】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值