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,如需转载请自行联系原作者

相关文章
|
1天前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
2天前
|
Shell Linux
【linux课设】自主实现shell命令行解释器
【linux课设】自主实现shell命令行解释器
|
2天前
|
存储 Unix Linux
linux权限管理以及shell
linux权限管理以及shell
|
3天前
|
运维 Linux Shell
day02-Linux运维-系统介绍与环境搭建_硬件 系统核心 解释器shell 外围操作系统
day02-Linux运维-系统介绍与环境搭建_硬件 系统核心 解释器shell 外围操作系统
|
8天前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
18 2
|
8天前
|
Linux
linux中wait与waitpid函数使用场景及扩展
linux中wait与waitpid函数使用场景及扩展
|
8天前
|
Linux
linux中fork函数与vfork函数的区别
linux中fork函数与vfork函数的区别
|
8天前
|
网络协议 Shell Linux
LabVIEW 在NI Linux实时设备上访问Shell
LabVIEW 在NI Linux实时设备上访问Shell
13 0
|
8天前
|
Shell Linux
【Linux】进程实践项目(更新中) — 自主shell编写
前几篇文章,我们学习进程的相关知识:进程概念,进程替换,进程控制。熟悉了进程到底是个什么事情,接下来我们来做一个实践,来运用我们所学的相关知识。这个项目就是手搓一个shell模块,模拟实现Xshell中的命令行输入。
15 1
|
8天前
|
Shell Linux 信息无障碍
5 个有用的 Linux Shell 转义序列
5 个有用的 Linux Shell 转义序列