Linux Shell循环控制符与函数

 

循环控制符与函数详解

  

break循环控制符;continue循环控制符.

循环控制符

退出整个循环 则可以使用break循环控制符;

退出本次循环后执行后续的循环,使用continue循环控制符;

 

 

#!/bin/bash

while true

do

echo "please enter a operation {1copy| 2delete|3backup|4exit }"

 

read -p " please enter youroperation:" op

 

case $op in

 

    1)

    continue

    echo " copy "

   ;;

 

   2)

 

     echo "delete"

    ;;

  3)

 

    echo "backup"

    ;;

 

    4)

      echo "exit"

 

   ;;

  *)

   echo " error ,try enter { 1 | 2 |3 |4 }  again"

 esac

done

 

 

 

函数详解

1-2-1-函数的定义基本知识

1-2-2-函数的调用

 

函数的定义基本知识

如果遇到很长的路径 做个变量就行

遇到很多重复的操作,做个函数即可

 

函数的基本格式:

name ( )

{

command1

command2

}

 

nginx ( )

{

netstat -anlpt | grep nginx

}

标题是函数的名称,函数体是函数内的命令集合,在编写脚本时要注意标题的唯一

不唯一脚本的执行时则会产生错误

函数不允许出现空命令-函数体中的命令集合必须包含至少一条命令

 

 

定义一个函数:

 

#!/bin/bash

student()                                                               #定义函数

{

       echo "Hello shell!"                                   #函数中的命令

}

echo "Now going to run student()"

student

echo "end the student()"

 

效果:

[root@RHEL7 shell]# sh for1.sh

Now going to run student()

Hello shell!                                                     #函数的执行结果

end the student()

 

注释:

在hanshu.sh中定义了一个简单的函数

首先执行echo “开始执行函数student”

执行student函数

最后执行echo”函数student执行结束”

函数与脚本一样都是依次执行

student(){ à名为student的函数  } 代表结束

 

 

参数的引用即传递

环境:

创建a.txt

[root@RHEL7 shell]# touch a.txt

 

编写脚本:

vim yinyong.sh

#!/bin/bash

delete()

{

       rm-rf $1

       mkdir$2

}

delete /root/shell/aa.txt /root/shell/mydir

 

执行

[root@RHEL7 shell]# sh yinyoug.sh

[root@RHEL7 shell]# ls -ld mydir/

drwxr-xr-x. 2 root root 6 Sep  5 21:53 mydir/

 

 

调用其他模块的函数

source 调用其他脚本的函数

定义一个有不同功能的模块

[root@RHEL7 shell]# cat option.sh

#!/bin/bash

delete()

       {

       rm-rf $del

       }

copy()

       {

       cp-fr $sdir $tdir

       }

backup()

       {

       tarzcvf $tar_name $star_dir &> /dev/null

       }

quit()

       {

       exit

       }

再次编辑一个文件

#!/bin/bash

source /root/shell/option.sh

while true

do

cat <<EOF

******************************

  Thefollowing is optional

******************************

       1)Copy

       2)Delte

       3)Backup

       4)Exit

******************************

EOF

read -p "Please enter youroptions:" option

case $option in

       1)

       read-p "Please input your want to copy the source file:" sdir

       read-p "Please input your target directory:" tdir

       copy

       ;;

       2)

       read-p "Please input your target directory: " del

       delete

       ;;

       3)

       read-p "Please enter your backup file names: " tar_name

       read-p "Please enter your backup file: " tar_dir

       backup

       ;;

       4)

       quit

       break

       ;;

       *)

       echo"$option is not optional operation"

esac

done

 

shift左移

    $1   $2   $3   $4

         $1   $2   $3

每执行一次,参数序列顺次左移一个位置,

10 11 12 13

$1 $2 $3 $4

#!/bin/bash        #如果位置参数小于等于0

if [ $# -le 0 ]    

 then

echo " error ! Not enough parameters"     #输出报错的信息

 

exit 124 

 fi         #退出返回一个值

#定义一个sum变量

sum=0 

#如果位置参数大于0,则成立;

while [ $# -gt 0 ]

do

#运算$sum+$1的和赋值给变量sum

    sum=$(expr $sum + $1)

#参数序列顺次左移一个位置

shift 

done

echo $sum

 



本文转自 OpenStack2015 51CTO博客,原文链接:http://blog.51cto.com/andyliu/1846584,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值