shell入门(2)

来源:互联网 发布:软件 地图周围距离 编辑:程序博客网 时间:2024/06/05 14:49

循环结构
  for
格式:
    for var_name in value1 value2value3....valuen
    do
        commond
    done
作用:将var_name在value1 value2value3....valuen循环遍历,每遍历一次执行一次commond,遍历完后,循环结束
例:遍历1到5

  3 for i in 1 2 3 4 5
  4 do
  5         echo -n "$i  "
  6 done
  7 echo

C式的for循环:
    for ((i = 0 ; i < 6 ; i ++))
    do
        commond
    done

        for ((i = 5 ; i > 0 ;i--))
        do
                commond
        done

对于值比较多,有规律的话,采用序列的方式表达:

格式:
    for var_name in $(seq start_value  step_value ned_value)
    do
        commond
    done
例:遍历
  3 #for i in $(seq 0  2  10)
  4 for i in `seq 0  2  10`
  5 do
  6         echo -n "$i  "
  7 done
  8 echo

产生一个1到100的序列循环:
  9 for i in `seq 10`
 10 do
 11         echo -n "$i  "
 12 done
 13 echo
产生一个5到20的序列循环:
 14 for i in `seq 5 20`
 15 do
 16         echo -n "$i  "
 17 done
 18 echo
产生一个5到20的序列循环,且每次增加5:
 14 for i in `seq 5 20`
 15 do
 16         echo -n "$i  "
 17 done
 18 echo

对文件操作
例:遍历/etc下的文件

  3 for i in `ls /etc/`
  4 do
  5         echo $i
  6 done

练习:遍历1+2+3+...+100的值
练习:打印99乘法表
-----------------------------------------

while 循环
循环次数不确定,或者死循环等我们可以用while

格式:
    while [ condition ]
    do
        commond
    done

作用:判断condition 是否成立,成立执行commond,打印完后,再回到while处,进行再次判断condition是否成立,只有condition不成立的条件下,才会退出循环

例:遍历1+2+3+...+100的值

练习:利用while循环方式创建3个用户,用户名和密码手工提示输入

-----------------------------------------
死循环:
  大多数的情况下,我们是要避免一些死循环,但是处于一些特定的目的,我们会可以的构造一些死循环,如监控

  写死循环的应注意两点:
  1、当条件符合一个条件时,我们可以退出来。
  2、如果一直无需退出,必要的时候有sleep语句。

构造一个死循环:
    while true
    do
        commond
    done

前面一个例子,监测vsftpd服务,没有启动,我们就启动它,启动就不管了。

while true
do
        if ! netstat -tunlp |grep -wvsftpd > /dev/null
        then
                service vsftpd start >/dev/null
        fi 
        sleep 5
done

------------------------------------------
循环嵌套:
  循环里面包含循环。
如:
    while []
    do
        while []
        do
            commond
        done
    done

打印一个三角形
*
* *
* * *
* * * *
* * * * *

--------------------------------------
循环控制语句
break:
    忽略掉后面的所有语句,跳出循环
continue:
    忽略掉后面的所有语句,重新开始新一轮的循环。
例:利用while循环创建3个用户,用户名和密码手工输入,输入用户名时要判断用户是否存在,如果存在要重新输入,密码要输入两次,如果两次输入的不一致,要重新输入。

打印一个空心三角形
*
* *
*  *
*   *
*     *
* * * * *

-------------------------------------------
函数:
  把可以重复使用的代码独立,抽象出来,用一个名字将其封装起来。

定义:
  function name(){

}
  或者
  name(){

}

函数使用的时候先定义,再使用。

例:
用函数实现,打印空三角形。
------------------------------
数组:
定义:
    a=(1 2 3 a b c "helleoworld")
   
    a[2]="123"

    a=([0]="he"[4]="who")
数组元数的访问:

    echo ${a[0]}   访问第一个元素
    echo ${a[*]}   访问所有元素
    echo ${#a[*]}  获取数组元素的个数

复制元数
    b=(${a[*]})

---------------------------------------
随机数:
    产生一个随机数:echo$RANDOM

    产生一个0到100的随机数:echo $[RANDOM%101]

    产生一个50到100的随机数:echo $[RANDOM%51 +50]

例:产生随机码
  要求:随机码长度为5
    有效字符 字符 数字 一些特殊符号

























 

原创粉丝点击