十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
      小程序
      tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
      掃一掃打開百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

      Linux系統(tǒng)中如何創(chuàng)建函數(shù)庫?

      百恒網(wǎng)絡(luò) 2017-08-04 4766

      使用函數(shù)可以在腳本中省去一些輸入工作,這一點(diǎn)是顯而易見的。但如果你碰巧要在多個腳本中使用同一段代碼呢?顯然,為了使用一次而在每個腳本中都定義同樣的函數(shù)太過麻煩。

      有個方法能解決這個問題!bash shell允許創(chuàng)建函數(shù)庫文件,然后在多個腳本中引用該庫文件。

      這個過程的第一步是創(chuàng)建一個包含腳本中所需函數(shù)的公用庫文件。這里有個叫作myfuncs的庫文件,它定義了3個簡單的函數(shù),那么如何創(chuàng)建函數(shù)庫文件呢?下面就由南昌網(wǎng)絡(luò)公司小編為大家講解一下:

      $ cat myfuncs

      # my script functions

      function addem {

      echo $[ $1 + $2 ]

      }

      function multem {

      echo $[ $1 * $2 ]

      }

      function divem {

      if [ $2 -ne 0 ]

      then

      echo $[ $1 / $2 ]

      else

      echo -1

      fi

      }

      $

      下一步是在用到這些函數(shù)的腳本文件中包含myfuncs庫文件。從這里開始,事情就變復(fù)雜了。

      問題出在shell函數(shù)的作用域上。和環(huán)境變量一樣,shell函數(shù)僅在定義它的shell會話內(nèi)有效。如果你在shell命令行界面的提示符下運(yùn)行myfuncs shell腳本,shell會創(chuàng)建一個新的shell并在其中運(yùn)行這個腳本。它會為那個新shell定義這三個函數(shù),但當(dāng)你運(yùn)行另外一個要用到這些函數(shù)的腳本時,它們是無法使用的。

      這同樣適用于腳本。如果你嘗試像普通腳本文件那樣運(yùn)行庫文件,函數(shù)并不會出現(xiàn)在腳本中。

      $ cat badtest4

      #!/bin/bash

      # using a library file the wrong way

      ./myfuncs

      result=$(addem 10 15)

      echo "The result is $result"

      $

      $ ./badtest4

      ./badtest4: addem: command not found

      The result is

      $

      使用函數(shù)庫的關(guān)鍵在于source命令。source命令會在當(dāng)前shell上下文中執(zhí)行命令,而不是創(chuàng)建一個新shell。可以用source命令來在shell腳本中運(yùn)行庫文件腳本。這樣腳本就可以使用庫中的函數(shù)了。

      source命令有個快捷的別名,稱作點(diǎn)操作符(dot operator)。要在shell腳本中運(yùn)行myfuncs庫文件,只需添加下面這行:

      . ./myfuncs

      這個例子假定myfuncs庫文件和shell腳本位于同一目錄。如果不是,你需要使用相應(yīng)路徑訪問該文件。下面小編就來講一下用myfuncs庫文件創(chuàng)建腳本的方法。

      $ cat test14

      #!/bin/bash

      # using functions defined in a library file

      . ./myfuncs

      value1=10

      value2=5

      result1=$(addem $value1 $value2)

      result2=$(multem $value1 $value2)

      result3=$(divem $value1 $value2)

      echo "The result of adding them is: $result1"

      echo "The result of multiplying them is: $result2"

      echo "The result of dividing them is: $result3"

      $

      $ ./test14

      The result of adding them is: 15

      The result of multiplying them is: 50

      The result of dividing them is: 2

      $

      這樣該腳本就成功地使用了myfuncs庫文件中定義的函數(shù)。

      以上就是南昌網(wǎng)絡(luò)公司小編為大家介紹的在Linux中庫文件的創(chuàng)建與使用,如果大家還有哪些不太明白的地方,可隨時來電和我們聯(lián)系,此外,了解更多關(guān)于網(wǎng)站建設(shè)、微信開發(fā)、南昌APP開發(fā)等方面的資訊,歡迎關(guān)注百恒網(wǎng)絡(luò)官網(wǎng)動態(tài)!


      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
      掃一掃打開百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      久久精品99国产精品日本| 久久综合精品国产二区无码| 国产精品亚洲自在线播放页码| 精品久久久久久亚洲中文字幕| caoporn国产精品免费| 人人妻人人澡人人爽精品日本| 日韩av无码成人无码免费| 一本久久a久久精品综合夜夜| 国产精品美女久久久网站动漫| 久久国内精品自在自线400部o | 久久只这里是精品66| 国产2021久久精品| 在线精品一区二区三区| 国产国拍亚洲精品mv在线观看| 亚洲欭美日韩颜射在线二| 精品国产VA久久久久久久冰| jiucao在线观看精品| 久久99精品久久久大学生| 亚洲日韩国产精品第一页一区| 日韩精品福利视频一区二区三区| 久久露脸国产精品| 国产精品制服丝袜| 99热门精品一区二区三区无码| 99视频精品全部免费观看| 国产精品哟女在线观看| 色婷婷色综合激情国产日韩| 无码欧精品亚洲日韩一区夜夜嗨| 国产精品1区2区| 久久久国产成人精品| 四虎影视永久在线精品| 久久99久久99小草精品免视看| 亚洲欧洲日韩国产| 中国精品白嫩bbwbbw| 国产精品无码av在线播放| 色综合99久久久无码国产精品| 亚洲第一精品在线视频| 在线精品亚洲一区二区小说| 任我爽精品视频在线播放| 日韩一区二区视频在线观看| 国产精品午夜无码体验区| 人妻少妇精品专区性色AV|