linux——shell流程控制

每种语言都有自己的流程控制,判断语句、循环语句。shell和他们一样,if判断、for、while循环等。

if判断:

         if 判断条件

         then

                commands

         else

                commands

          fi

  判断条件:主要判断以下三种情况。test 和[       ]

  • 数字比较
  • 字符串比较
  • 文件比较

我们知道c/c++等语言的if语句if(条件)是条件为真时,才执行下面的语句。但是,shell中条件判断为假(返回值是0),才执行下面语句。这也就是为什么命令可以作为判断条件了,命令执行成功时,返回值为0。我们可以得到任意一个命令的返回值echo $?。在while循环中的条件也是这种的。

虽然对于编写代码,并没有卵用,但是,学习不应该止于表面。。。

for循环:

          for var in list

          do

                commands

          done

list是列表。列表是一大串字符串,那么出问题了,for怎么认识每一个变量值呢,这就是环境变量IFS发挥作用的时刻了,IFS默认值是空格,制表符,换行符。。在list列表当中,只要出现上三种符号则划分出变量值。如果我们划分号不是上三种的时候可以自定义IFS值。

例如:读取文本每行字符,对他们处理为:

#!/bin/bash

OLD_IFS=$IFS

IFS="\n"

for line in `cat filename`

do

    echo "$line"

done

IFS=$OLD_IFS


for也可以使用类似c语言的结构

例如:for((i=0;i<10;i++))

while循环:

while test command

do

    other commands

done

和c一样,其间也可以使用break结束循环,continue直接进行下一次循环。

你可能感兴趣的:(linux,shell)