ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

bash 函数库

2022-05-02 18:33:34  阅读:143  来源: 互联网

标签:函数库 lib01 checkFileExists etc sh root bash


  对某些很常用的功能,必须考虑将其独立出来,集中存放在一些独立的文件中,这些文件就称为“函数库”。这么做的好处是在后期开发的过程中可以直接利用这些库函数写出高质量的代码。

  库函数的本质也是“函数”,所以它的定义方式和普通函数没有任何区别,但为了和一般函数区分开来,在实践中建议库函数使用下划线开头。

  

  由于Shell是一门面向过程的脚本型语言,而且用户主要是Linux系统管理人员,所以并没有非常活跃的社区,这也造成了Shell缺乏第三方函数库,所以在很多时候需要系统管理人员根据实际工作的需要自行开发函数库。下面建立一个叫lib01.sh的函数库,该函数库目前只有一个函数,用于判断文件是否存在。

[root@Centos8_test bashpractise]# cat lib01.sh
_checkFileExists(){
if [ -f $1 ]
then
        echo "File:$1 exists"
else
        echo "File:$1 not exists"
fi
}

  其他脚本在希望直接调用_checkFileExists函数时,可以通过直接加载lib01.sh函数库的方式实现。加载方式有以下两种:

#使用“点”命令
[root@localhost ~]# . /PATH/TO/LIB
#使用source命令
[root@localhost ~]# source /PATH/TO/LIB

   假设现在有个脚本想要直接调用_checkFileExists函数,可以通过加载lib01.sh函数库来实现。从下面的演示可以看出,通过调用函数库的方式会使开发脚本变得更为简便。

[root@Centos8_test bashpractise]# cat callLib01.sh
#!/bin/bash
source ./lib01.sh #引用当前目录下的lib01.sh函数库
_checkFileExists /etc/not
_checkFileExists /etc/passwd

  执行结果

[root@Centos8_test bashpractise]# ./callLib01.sh
File:/etc/not not exists
File:/etc/passwd exists

   很多Linux发行版中都有/etc/init.d目录,这是系统中放置所有开机启动脚本的目录,这些开机脚本在脚本开始运行时都会加载/etc/init.d/functions或/etc/rc.d/init.d/functions函数库(实际上这两个函数库的内容是完全一样的)

  

 

标签:函数库,lib01,checkFileExists,etc,sh,root,bash
来源: https://www.cnblogs.com/zed99/p/16216344.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有