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 博客,原文链接:       http://blog.51cto.com/andyliu/1846584 如需转载请自行联系原作者

相关文章
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
95 6
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
140 3
|
2月前
|
Linux
在Linux内核中根据函数指针输出函数名称
在Linux内核中根据函数指针输出函数名称
|
3月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
48 2
|
3月前
|
Shell Linux C语言
Linux0.11 execve函数(六)
Linux0.11 execve函数(六)
65 1
|
3月前
|
Linux API
Linux源码阅读笔记07-进程管理4大常用API函数
Linux源码阅读笔记07-进程管理4大常用API函数
|
3月前
|
安全 Unix Linux
Linux Clone函数
Linux Clone函数
59 3
|
3月前
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
47 0
|
3月前
|
存储 Linux 调度
Linux 0.11 fork 函数(二)
Linux 0.11 fork 函数(二)
40 0
|
3月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?