1.12 函数和参数

2019-03-05  本文已影响0人  拙言_Coder

《Linux Shell 脚本攻略(第 2 版)》读书笔记

  1. 定义函数

    function fname() #关键字 function 可省略
    {
        #函数内容
    }
    
  2. 调用函数

    #只需要使用函数名就可以调用某个函数
    fname ;
    
  3. 传递参数

    fname arg1 arg2
    

    在函数中访问函数参数的方法:

    #!/bin/bash
    echo $0
    echo $1, $2 #访问参数1和参数2
    echo $@      #以列表的方式一次性打印所有参数
    echo $*      #类似于$@,但是参数被作为单个实体
    echo ----------------------
    fname() {
        echo $1, $2 #访问参数1和参数2
        echo $@      #以列表的方式一次性打印所有参数
        echo $*      #类似于$@,但是参数被作为单个实体
        return 0 #返回值
    }
    
    fname 1 2 3
    

    类似地,参数也可以传递给脚本,并通过$0(脚本名)访问

    • $1 第一个参数
    • $2 第二个参数
    • $n 第n个参数
    • $@ 被扩展成 $1 $2 $3
    • $* 被扩展成 $1c$2c$3,其中 c 是 IFS 的第一个字符。
    • $@ 要比 $* 用得多。由于 $* 将所有的参数当作单个字符串,因此它很少被使用。
  4. 递归函数

    fname() {
        echo $1
        sleep 1
        fname $1 #调用自身
    }
    fname hello
    

    Fork 炸弹

    :(){ :|:& };:
    
  5. 导出函数

    函数也能用 export 导出,导出后函数的作用域就可以以扩展到子进程中:

    export -f fname
    
  6. 读取命令返回值(状态)

    cmd          #执行了一条命令
    echo $?      #打印上一条命令的返回值(返回值也被称为“退出状态”)。成功为 0,否则为非0
    
  7. 向命令传递参数

    command [-pv] [-k N] filename
    

    上面这条命令有如下几种执行方式:

    • $ command -p -v -k 1 file
    • $ command -pv -k 1 file
    • $ command -vpk 1 file
    • $ command file -pvk 1
上一篇下一篇

猜你喜欢

热点阅读