shell学习笔记之八(函数)

函数
    定义:
        1、无返回值
            #function为关键字,FUNCTION_NAME为函数名
            function FUNCTION_NAME(){
                command1
                command2
                ...
            }
            省略关键字function,效果一样
            FUNCTION_NAME(){
                command
                ....
            }
            例:
                1、简单函数声明和调用
                    #!/bin/bash
                    function sayHello(){
                        echo "Hello World!"
                    }
                    sayHello
                    注意:
                        1、sayHello调用的时候没有(),sayHello()这样的调用会出错。
                        2、如果先调用再声明,则调用和声明之间不能有其他语句
                2、计算文件的行数
                    #!/bin/bash
                    if [[ $# -lt 1 ]];then
                        echo "Please input a filename."
                        return
                    fi
                    file=$1
                    countLine
                    function countLine(){
                        local line=0
                        while read
                        do
                            let "line++";
                        done < $file
                        echo "$file has $line lines."
                    }
        2、函数的返回值
            return
            获取返回值的主要方式是$?
            例:
                #检测文件是否存在
                #!/bin/bash
                file=$1
                check
                if [ $? -eq 0 ];then
                    echo "$file exists."
                else
                    echo "$file doesn‘t exist."
                fi
                function check(){
                    if [ -e $file ];then
                        return 0
                    else
                        return 1
                    fi
                }
        3、带参数的函数
            1、位置参数
                这个和高级语言不一样,在函数声明里没有指定参数,而是直接在函数体里使用,调用的时候直接传入参数即可
                例:
                    1、检测文件是否存在
                        #!/bin/bash
                        check $1 #这里不再使用file变量
                        if [ $? -eq 0 ];then
                            echo "$1 exists."
                        else
                            echo "$1 doesn‘t exist."
                        fi
                        function check(){
                            if [ -e $1 ];then #函数体里的参数
                                return 0
                            else
                                return 1
                            fi
                        }
                    2、计算两数之和
                        #!/bin/bash
                        function add(){
                            local tmp=0
                            i=$1
                            j=$2
                            let "tmp=i+j"
                            return $tmp
                        }
                        add $1 $2
                        echo "$?"
            2、指定位置参数值
               使用set内置命令给脚本指定位置参数的值(又叫重置)。一旦使用set设置了传入参数的值,脚本将忽略运行时传入的位置参数(实际上是被set
            重置了位置参数的值)
                  例:
                    #!/bin/bash
                    set 1 2 3 4
                    count=1
                    for var in [email protected]
                    do
                        echo "Here \$$count is $var"
                        let "count++"
                    done
                    注意:输入时不管有多少参数都重置为四个参数。
                        如:
                            . ./function03.sh a b c d e f
                        结果:
                            Here $1 is 1
                            Here $2 is 2
                            Here $3 is 3
                            Here $4 is 4
                    注意:有什么意义?
            3、移动位置参数
                回顾:
                    shift,在不加任何参数的情况下,这个命令可以将位置参数向左移动一位。
                    例:
                        #!/bin/bash
                        until [ $# -eq 0 ]
                        do
                            echo "Now \$1 is:$1,total paramert is:$#"
                            shift
                        done
                        注意:活用位置参数,
                            [email protected]/$*:所有参数
                            $1..$n:第n个参数,当n大于10时,要将n用()括起来
                            $0:脚本本身
                                当用‘.’执行脚本时为bash
                                当用bash执行脚本时返回的文件名
                                当用./scriptname执行时返回./scriptname
                            $#:所有参数
                扩展
                    指定左移的位数,shift n
                    例:
                        #!/bin/bash
                        echo "$0"
                        until [ $# -eq 0 ]
                        do
                            echo "Now \$1 is:$1,total paramert is:$#"
                            shift 2
                        done
                        注意:如果输入命令时指定了奇数个参数,则脚本会陷入死循环。
        4、函数库
            为了和普通函数区别,在实践中,建议库函数使用下划线(_)开头
            加载库函数:
                1、使用"点"(.)命令
                2、使用source命令
                例:
                    1、建立函数库
                        实际上就是写一个都是函数的脚本文件
                        例:建立库lib01.sh
                            function _checkFileExist(){
                                if [ -e $1 ];then
                                    echo "File:$1 exists"
                                else
                                    echo "File:$1 doesn‘t exists"
                                fi
                            }

                    2、使用
                        #!/bin/bash
                        #source ./lib01.sh
                        . ./lib01.sh
                        _checkFileExist $1
            系统函数库:
                /etc/init.d/functions(我的系统是ubuntu,没看到这个文件)
                一个27个函数
时间: 2024-10-13 06:56:25

shell学习笔记之八(函数)的相关文章

Linux Shell 学习笔记

2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用. exit(0)表示正常退出执行程序,如果加其它的数值:1,2,....可以表示由于不同的错误原因而退出 . main函数中exit(0)等价于return 0. 1. Linux下一条命令或一个进程执行完成会返回一个一个状态码. 0 === 成功执行 非0 === 执行过程

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

C和指针 学习笔记-4.函数

参数传递: 参数传递采用按值传递 ADT&黑盒 ADT:abstract data type,抽象数据类型 c可以用于设计与实现抽象数据类型,因为它可以限制函数和数据定义的作用域,这种技巧也称为黑盒设计 user.h #define MAXLEN 3 struct UserClz { char *name; char *phone; char *address; }; typedef struct UserClz User; /* *接函数 *通地名称查找地址 */ char const * l

day8_python学习笔记_chapter11_函数

1. 返回对象的数目   python实际返回的对象 0 -> None ; 1 -> object ; >1 -> tuple 2. 内部/内嵌函数:如果内部函数的定义包含了再外部函数里定义的对象的引用, 内部函数会变成被称为闭包的特别之物. 3. 装饰器 day8_python学习笔记_chapter11_函数,布布扣,bubuko.com

Shell学习笔记——第三章

第三章 /etc/passwd 文件包含一个所有系统用户账户组成的列表,以及一些关于每个用户的基本信息. 例rich:x:501:Rich Blum:/home/rich:/bin/bash 每个条目都有7个数据字段,例使用冒号分隔.系统使用这些字段中的数据向用户分配具体的特性.这些字段分别有 用户名:用户密码(如果密码存储在其他文件中,则为占位符):用户的系统用户ID编号:用户的系统组的ID编号:用户的全名:用户默认的主目录:用户的默认Shell目录: cd 命令 略过 列表命令(ls) 参数

lua学习笔记之函数

Lua学习笔记之函数 1.  函数的作用 函数主要完成指定的任务,这样的情况下函数作为调用语句使用,函数可以计算并返回值,这样的情况下函数作为赋值语句的表达式使用. 语法: funcationfunc_name(arguments-list) Statements-list end 调用函数的时候,如果参数列表为空,必须使用()表示是函数调用. Print(8*9,9/8) a = math.sin(3) +math.cos(10) print(os.date()) 上述规则有一个例外,当函数只

SHELL学习笔记----IF条件判断,判断条件

SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here       elif list then           do another thing here       else          do something else here fi  EX1: #!/bin/bash if [ `uname -m` == "x86_64" ]