zoukankan      html  css  js  c++  java
  • Shell_3 函数

    1 函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。

    函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。

    Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。

    如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。

    #!/bin/bash
    
    # Calling one function from another
    number_one () {
       echo "Url_1 is http://see.xidian.edu.cn/cpp/shell/"
       number_two
    }
    
    number_two () {
       echo "Url_2 is http://see.xidian.edu.cn/cpp/u/xitong/"
    }
    
    number_one

    2 函数参数

    注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

    3  输入输出重定向

    Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。

     重定向输出 > . >>  , 

     重定向输入 < , << , 

      重定向深入讲解

    一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

    • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

    如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:

    $command > file 2>&1
    # 或者 $command >> file 2>&1

    如果希望对 stdin 和 stdout 都重定向,可以这样写:

    $command < file1 >file2 
    全部可用的重定向命令列表
    命令说明
    command > file 将输出重定向到 file。
    command < file 将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file 将文件描述符为 n 的文件重定向到 file。
    n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m 将输出文件 m 和 n 合并。
    n <& m 将输入文件 m 和 n 合并。
    << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    4  Here Document

    Here Document 目前没有统一的翻译,这里暂译为”嵌入文档“。Here Document 是 Shell 中的一种特殊的重定向方式,它的基本的形式如下: 

    command << delimiter
        document
    delimiter

    它的作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。

    注意:

      • 结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
      • 开始的delimiter前后的空格会被忽略掉。

     5 /dev/null文件

    /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出“的效果。

    $ command > /dev/null
    $ command > /dev/null 2>&1

    6 文件包含

     像其他语言一样,Shell 也可以包含/引用外部脚本,将外部脚本的内容合并到当前脚本。

    . filename
    #或
    source filename 

    注意:被包含脚本不需要有执行权限。

  • 相关阅读:
    App的开发过程(转载)
    一款APP的完整开发流程 (转载)
    JS判断是否是数组的四种做法(转载)
    easyui datagrid Column Group 列组、 复杂表头 嵌套表头 组合表头 (转载)
    php bootstrap-datetimepicker
    Echarts实现Excel趋势线和R平方计算思路
    前端项目开发流程(转载)
    对有序特征进行离散化(继承Spark的机器学习Estimator类)
    Spark ML 中 VectorIndexer, StringIndexer等用法(转载)
    Z-Score数据标准化(转载)
  • 原文地址:https://www.cnblogs.com/zsr0401/p/6252015.html
Copyright © 2011-2022 走看看