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