zoukankan      html  css  js  c++  java
  • 在shell脚本中进行条件控制以及使用循环

     转载请标明:http://www.cnblogs.com/winifred-tang94/

    if条件语句语法:

    if [ 条件表达式 ]

    then

               代码

    else

               代码

    fi

    注意:在上面的if条件语句中,if和 [ 之间要有空格,而条件表达式和两边的 [ ] 都要有空格,条件表达式不能紧挨着 [ 和 ]。

    if条件表达式以fi结束。

    Eg.

    结果出现了以下问题:

    原因是因为开头在#!后还要有一个/,加上/后解释器错误没有了,代码如下:

    可是仍然有没有那个文件或目录的错误。对于这个错误我觉得是echo后的表达式有问题,于是注销了表达式,改输出small和bigger,结果程序运行正确,输出了small或者bigger。

    所以对于echo后的表达式,我把表达式加上双引号,结果运行成功,没有问题了。

    利用case表达式进行条件判断:

    case 变量 in

    str1)

    命令串;;

    str2)

    命令串;;

    *)

    Eg.

    刚才之所以出错,是因为代码没有正确结尾,case条件语句在shell中应该以esca结尾。

    又出现错误如下:

    原因:

             *后面的)为中文符号,将它改为英文符号,并且case条件语句的结束应该为esca而不是easc,修正后如下:

    就正确了,正确结果如下:

    在shell脚本中使用for循环

    shell中可以使用三种循环:

    A、for循环

    第一种语法形式:
    for var in list

    do

             命令串

    done

    注意上面的list的形式可以使用空格分隔的$1 $2 $3,或者空格分隔的值1 2 3。

    第二种语法形式:

    for var

    do

             命令串

    done

    在这种形式中,list被省略了,那么这时list就是指命令行参数,每次循环的var都是一个命令行参数。

    eg.输出命令行参数的和

    注意上面shell程序中echo命令的参数 -e是为了让c 和生效,其中c是表示输出加数后不换行,是退格的意思删除多余的+号。

    运行脚本后出现错误:

    原因:

             expr不能喝test指令的-gt婚后在一起用,要不然将expr改为test,要不然将-gt改为>=

    ,值得注意的是>=前面要使用。

    仍然出错为:

    原因为:

             sum求和时,等号两端不能有空格

    改为:

    运行后结果为:

    B、while循环

    语法格式:
    while 条件表达式

    do

             命令行串;

    done

    eg.输出命令行每个参数

    shift命令将命令行参数左移,是原来处于第二位的参数变成第一位然后输出。

    结果为:

    注意while循环的条件表达式也要用空格将条件表达式与 [ 和 ]分隔开来。

    如果要在while中使用另一个变量n,要用 -n 的形式来表示在循环体中使用的一元表达式:

    当然如果while中不添加-n也有一样的结果:

    C、until循环

    语法格式如下:

    until 条件表达式

    do

             命令串;

    done

  • 相关阅读:
    C C++ 数字后面加 LL是什么意思
    stdio.h cstdio的区别
    printf scanf cin cout的区别与特征
    PAT Basic 1020
    PAT Basic 1012
    PAT Basic 1046
    PAT Basic 1026
    PAT Basic 1011
    PAT Basic 1016
    PAT Basic 1009
  • 原文地址:https://www.cnblogs.com/winifred-tang94/p/5827958.html
Copyright © 2011-2022 走看看