zoukankan      html  css  js  c++  java
  • shell学习——关于shell函数库的使用

    shell函数库的理解:

      个人理解,shell函数库实质为一个脚本,脚本内包含了多个函数(函数具有普遍适用性)。

    shell函数库的调用:

      通过  . /path/lib/file.lib 或者 source /path/lib/file.lib的方式加载,然后正常函数方式调用。

    示例如下:

      创建函数库文件:libMyfunctions.sh

    #!/bin/bash
    
    #创建一个函数库文件,用来打印$PATH的路径
    
    showPATH(){
            oldifs="$IFS"
            IFS=:
            for dir in $PATH 
            do
                    echo $dir
            done
    
            IFS="$oldifs"
    }
    #这里可以增加N个其他函数
    

      调用函数库文件:

    #!/bin/bash
    #方法1:
    #. /home/wyf349/user/lib/libMyfunctions.sh     
    #通过 . 加载函数库文件,注意 . 和路径之间存在一个空格
    #方法2: source ../lib/libMyfunctions.sh showPATH

      需要注意的是,函数库的加载,其实是在调用的脚本中执行了这个文件,所以在函数库文件中不能包含exit的语句,否则将导致当前实例退出。

    使用Ubuntu的时候,可能存在如下提示:

    wyf349@ubuntu:~/user/study_shell$ sh lib_stduy_test1.sh*
    lib_stduy_test1.sh: 7: lib_stduy_test1.sh: source: not found
    lib_stduy_test1.sh: 9: lib_stduy_test1.sh: add: not found
    

      原因为:Ubuntu默认的sh解析器为dash,需要调整为bash

    ls -l /bin/sh
    #如果输出为dash
    sudo dpkg-reconfigure dash 
    #在弹出的选择框中,选择no即可
    

      

  • 相关阅读:
    BZOJ 4815: [Cqoi2017]小Q的表格
    BZOJ 3676: [Apio2014]回文串
    BZOJ 4503: 两个串
    BZOJ 2618: [Cqoi2006]凸多边形
    BZOJ 1137: [POI2009]Wsp 岛屿
    BZOJ 4824: [Cqoi2017]老C的键盘
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 4033: [HAOI2015]树上染色
    1003. 我要通过!(20)
    1002. 写出这个数 (20)
  • 原文地址:https://www.cnblogs.com/wyf-349/p/11464975.html
Copyright © 2011-2022 走看看