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]EL7 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

时间: 2024-12-29 06:56:39

Linux Shell循环控制符与函数的相关文章

linux shell自定义函数(定义、返回值、变量作用域)介绍

http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以

转 linux shell自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

(三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)

3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" echo '$name\"'+" ${name}" #原样输出 $name\"+ coding echo `date` #当前日期 3.1.2 printf命令 printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变

linux shell for循环解决递归循环目录结构

今天总结一下关于linux shell里的递归循环的问题起因是一个群友在群里的提问问的是怎么把有或多或少空目录的几个文件移动走的问题归根结底就是一个递归循环的问题 如果之前接触过c语言之类的编程语言.那么这个很好理解就是通过函数来不断的自己调用自己这种方法有一个很大的弊端就是需要很多资源比如有一种进程调用的 fork 炸弹 就是自调用搞的 接下来我就贴一下代码然后简单的讲解一下 #!/bin/sh . /etc/plus.lib a() {     for file  in `ls $1`   

tar ,cpio打包解压. shell脚本for,while,until循环. rpm包管理,select循环菜单,函数function,yum

tar  tar -cf 路径+文件名字后续.tar  +路径 创建归档压缩 tar cf /testdir/etc.tar /etc/ tar cvf 可以查看解压过程 tar tvf 预览作用 tar xvf 解压文件 tar zcvf /testdir/etc2.tar.gz /etc/ 解压再压缩到指定路径,文件格式 tar jcvf cpio 复制 从或到文件 cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以".cpio"或者".ta

〖Linux〗上传单个文件到FTP的Shell命令行(函数)

1 #!/bin/bash - 2 #=============================================================================== 3 # 4 # FILE: ftp_put_file.sh 5 # 6 # USAGE: ./ftp_put_file.sh 7 # 8 # DESCRIPTION: 9 # 10 # OPTIONS: --- 11 # REQUIREMENTS: --- 12 # BUGS: --- 13 # NO

Linux Shell函数返回值

转:http://blog.csdn.net/ithomer/article/details/7954577 Shell函数返回值,一般有3种方式:return,argv,echo 1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回.示例: [javascript] view plain copy print? #!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = &q

Linux shell 流程控制(条件if,循环for,while)

Linux shell 流程控制(条件if,循环[for,while],选择[case]语句实例 linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi 如果对于:条件测试语句不是