您的位置:首页 > 运维架构 > Shell

Shell| 流程控制语句(if)和判断逻辑的几种写法(是否省略test)

2018-03-03 13:22 791 查看

一.流程控制的几种写法

这里同一采用的的是将
then
和条件放在一行处理,具体讲解可以看第二点
判断逻辑的几种写法
控制逻辑的结束以
fi
结束.

①只有逻辑

if  条件一 ; then
命令一
fi


②1/0的逻辑

if  条件一 ; then
命令一
else
命令二
fi


③多条件逻辑

if  条件一 ; then
命令一
elif 条件二 ; then
命令二
elif 条件三 ; then
命令三
else
命令四
fi


综合例子:

#! /bin/bash

echo 'input num1 and num2:'     #从控制台获取两个值,将值赋给变量num1和num2
read num1 num2

if [ $num1 -eq $num2  ] ; then
echo 'num1 =  num2'
elif [ $num1 -gt $num2  ] ; then
echo 'num1 > num2'
else
echo 'num1 < num2'
fi


运行结果:

按照提示
input num1 and num2:
输入的变量格式一定要有2个,否则会报错.

[root@yveshe ~]#
[root@yveshe ~]# ./numTest.sh
input num1 and num2:
2 1
num1 > num2
[root@yveshe ~]#


二.判断逻辑的几种写法

这里以流程控制语句中的相对较简单的流程以及
判断两个数值
为例子来来讲解判断逻辑的几种写法.

1.传统逻辑写法:

使用test来判断,判断格式为
test 测试条件


#! /bin/bash

num1=1
num2=2

if  test $num1 -eq $num2
then
echo 'num1 = num2'
else
echo 'num1 != num2'
fi


结果:

[root@yveshe ~]# ./numTest.sh
num1 != num2


2.省略test写法

判断格式是在test的基础上省略了
test
然后加上了
[]
,格式为
[ 测试条件 ]
但是要特别注意的是
[]
和条件之间一定要有空格,否则会报错
command not found
.

#! /bin/bash

num1=1
num2=2

if  [ $num1 -eq $num2 ]
then
echo 'num1=num2'
else
echo 'num1!=num2'
fi


测试结果:

[root@yveshe ~]# ./numTest.sh
num1 != num2


3.将then关键字和if判断条件放在同一行

说明:将多要执行语句放放在同一行只需要在每条语句结尾添加
;
既可.这里是将then语句放在了
if  [ $num1 -eq $num2 ]
之后.

#! /bin/bash

num1=1
num2=2

if  [ $num1 -eq $num2 ] ; then
echo 'num1 = num2'
else
echo 'num1 != num2'
fi


甚至 可以将所有的命令写在一行

if  [ $num1 -eq $num2 ] ; then  echo 'num1=num2'; else echo 'num1!=num2'; fi
.具体的
;
在shell中的使用以及
$$
使用可以参考
Shell| 关于;和&&以及命令换行在shell中的区别


结果:

[root@yveshe ~]# ./numTest.sh
num1 != num2


三 数值判断,字符串判断,文件判断

关于值判断,字符串判断,文件判断的判断条件格式参考 Shell| Test命令和判断条件格式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: