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

linux中的if用法和简单的循环

2017-08-05 13:27 288 查看
if用法来一波今天来一波在linux总if的简单用法,实用与否还需要自己来判定。上一次在for中没有提及shell脚本中格式问题,今天来补一下如若知道的,略过就好。。。在linux中,shell开头一般是很重要的,但是却又都是注释要不要都行!这是为什么呢?

在上图中显示第一行#!/bin/bash (井号后面有感叹号)表示在什么环境下执行,若是在bash shell下没什么用,但是在csh等其他环境下可能会出现错误无法执行的情况,所以第一行还是养成写脚本好习惯的必需品。横线中间的则是避免日后再看见脚本时好容易知道脚本是干吗的,有什么用,或者其他人看见时好清楚这个脚本的作用知道怎么去对待处理这个脚本。闲扯完该来讲讲重点了!!!今天写的这个if也是很有意思的,那就是可以嵌套。什么事嵌套呢,就是相当于盒子里面还有个盒子,里面的盒子还能装个盒子。。。。。。。。等等等。。。。。。。。。。。。下面就来简单的说明一下他的一些用法。if语法格式大致是这样的:

if标准开头,后面跟上判断语句(判断语句就是里面一段代码,而if去判断他,当执行退出状态为0是执行一段代码,退出状态不为0跳过这些命令执行另外一段。为不为0我自己感觉就是判断代码是否正确),之后换行then 在跟上执行正确后输出的内容 fi来结束if判断。下面来举个例子看看是怎么判断的,怎么输出的。

一般情况下方括号内会进行判断,如若里面语法成立则视为正确输出(即判断结果为0的时候为真,判断结果为不为0时为假)。

该示例我把var1和var2定义为变量然后用if语句来比较大小,这里提及一下方括号里(-ge的意思:是否大于等于)的判断语句如果var2大于var1变量则会输出正常输出结果也就是then部分。 这里我把文件名该为1了,图个方便好执行。这是正确输出结果输出了echo后面的内容也就是then的部分。不知道你有没有想到如果这个输出结果是错误的呢,比如把变量var1和var2的变量位置调换一下。判断10是否大于20。不用想肯定不大于,这时候会输出什么呢。

看到上图执行结果,为什么没有输出结果呢。那是因为没有定义判断结果为假的时候输出结果是什么,所以什么都没有输出。接下来就介绍一下else,当括号内为假时候的让if怎么输出为假的结果(不定义就什么也不输出)。

判断10是否大于20,明显不大于,则执行else内的代码即输出“10小于20”。突然间我想到。。。。。。万一需要判断三次呢,比如两个数字当大于时输出什么,小于时输出什么,等于时输出什么。把等于单独列举出来,虽然有可以判断大于等于或者小于等于的语句。但是我就是不用。

上图我首先判断两个变量是否相等(-eq判断左右是否相等)如果相等直接执行then内容跳过else然后结束!不相等跳过then执行else到达else之后进行判断$var2是否大于$var1若大于执行里面那个if的then语句,如果不大于则执行第二个if的else。这样完成了两次判断。下面我就将变量var1改为{10,20,30}来看下执行的结果。

把所有可能输出的结果都输出了一遍,这样就可以判断可能性有三种的情况的语句了。如果有四种或者以上,看着在特定的地方嵌套if就好。跟嵌套差不多的还有一个elif,第一次看见感觉这不是else和if的结合体吗。。。。。这种适合来用于多种判断,最后只有判断输出结果为0的才会执行then语句,其他直接跳过。

这次我用了elif自我感觉这个比上面的嵌套在里面的if要好用啊,只会执行为真的时候then内的命令。执行结果为下(还是改了三次变量var1)

对于判定三次,如果第一次第二次都成立呢?if语句会执行哪个代码呢。

上图我把两个变量都等于20,第一次判定是否大于等于(不大于但是等于也是成立的,但是输出是大于等于)第二次判定是否等于(也是成立的,但是输出等于)这样的判断语句会输出什么呢,不妨试试。

结果指输出了大于等于,显然第二次判断没有进行。由此可得一个结论那就是直到进行括号内为真(有些判定是否为假的,若为假执行then若为真执行else。并不是一定为真才执行then)的执行完该then语句,其他直接后面的直接跳过不执行结束判断。还有一些其他语句,或者和if混用的比如for,while等循环也可以和if一起使用,等到都接触到了在讲一波吧。学习也是循序渐进的过程,一口吃不成个胖子总的来说if语句还是比较好理解的(自我感觉比C的要简单,其实都万变不离其宗),要熟练掌握还是用的多了也就感觉没什么了,毕竟熟能生巧啊!预知后事如何-------我哪知道后事如何。。。。。。写的不周到的地方尽情的指出,反正我也不改(开玩笑)!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux if