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

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM