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即可

  

最新文章

  1. 两种方法设置disabled属性
  2. 【Java EE 学习 22 下】【单线程下载】【单线程断点下载】【多线程下载】
  3. Linux安装搜狗拼音输入法
  4. 安装redis
  5. lsyncd 实时同步
  6. wordpress 缩略图功能函数 the_post_thumbnail
  7. ubuntu下git clone 出现Permission denied (publickey).
  8. 【HDOJ】1885 Key Task
  9. 提高mindmanager 8的启动速度
  10. Hibernate学习(1)- 初识
  11. vue 点击弹窗外框关闭弹框
  12. Codeforces Round #481 (Div. 3)题解
  13. 基于spring boot的统一异常处理
  14. NOIP2018考前抱佛脚——数据结构基础及STL实现
  15. POJ3208魔鬼数
  16. java+redis+lua生成自动增长的ID序列号
  17. pytorch之Tensor
  18. 安卓 onTouch OnTouchEvent onChick 顺序
  19. 在局域网中查找特定设备的 IP
  20. 配置Eclipse自动编译NDK/JNI

热门文章

  1. ng-zorro等组件默认样式的修改
  2. volatility 命令
  3. java导入导出Excel文件
  4. 洛谷 P3384树链剖分 题解
  5. Ruby学习中(条件判断, 循环, 异常处理)
  6. [Next] next中文文档
  7. 15 Python之内置函数
  8. 07 MySQL之索引原理
  9. 08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器
  10. js 条件方法、数组方法