Linux Shell循环控制符与函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()"

 

效果:

[[email protected] 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

[[email protected] shell]# touch a.txt

 

编写脚本:

vim yinyong.sh

#!/bin/bash

delete()

{

       rm-rf $1

       mkdir$2

}

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

 

执行

[[email protected] shell]# sh yinyoug.sh

[[email protected] shell]# ls -ld mydir/

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

 

 

调用其他模块的函数

source 调用其他脚本的函数

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

[[email protected] 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

 

 


本文出自 “技术成就梦想” 博客,请务必保留此出处http://andyliu.blog.51cto.com/518879/1846584

以上是关于Linux Shell循环控制符与函数的主要内容,如果未能解决你的问题,请参考以下文章

Linux mysql shell脚本 变量和环境变量 位置参数 预定义变量 运算符 判断 流程控制 for循环 与用户交互 函数

你该认识这样的Linux_shell之循环控制

shell编程之常用判断条件流程控制IFcaseforWHILE循环read读取控制台输入函数basenamedirname以及自定义函数

linux12shell编程 -->流程控制之while循环

linux控制语句

linux12shell编程 -->流程控制之for循环1