在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在函數庫中調用指令?

Linux愛好者 ? 來源:未知 ? 作者:工程師郭婷 ? 2018-08-31 15:51 ? 次閱讀

函數是一段可復用的代碼。我們通常把重復的代碼放進函數中并且在不同的地方去調用它。庫是函數的集合。我們可以在庫中定義經常使用的函數,這樣其它腳本便可以不再重復代碼而使用這些函數。

本文我們將討論諸多關于函數的內容和一些使用技巧。為了方便演示,我將在 Ubuntu 系統上使用Bourne Again SHell (Bash)。

調用函數

在 Shell 中調用函數和調用其它命令是一模一樣的。例如,如果你的函數名稱為my_func,你可以在命令行中像下面這樣執行它:

$ my_func

如果你的函數接收多個參數,那么可以像下面這樣寫(類似命令行參數的使用):

$ my_func arg1 arg2 arg3

定義函數

我們可以用下面的語法去定義一個函數:

functionfunction_name{

Body of function

}

函數的主體可以包含任何有效的命令、循環語句和其它函數或腳本。現在讓我們創建一個簡單的函數,它向屏幕上顯示一些消息(注:直接在命令行里寫)。

functionprint_msg{

echo"Hello, World"

}

現在,讓我們執行這個函數:

$print_msg

Hello,World

不出所料,這個函數在屏幕上顯示了一些消息。

在上面的例子中,我們直接在終端里創建了一個函數。這個函數也可以保存到文件中。如下面的例子所示。

#!/bin/bash

functionprint_msg{

echo"Hello, World"

}

print_msg

我們已經在 function.sh 文件中定義了這個函數。現在讓我們執行這個腳本:

$chmod +xfunction.sh

$./function.sh

Hello,World

你可以看到,上面的輸出和之前的是一模一樣的。

更多函數用法

在上一小節中我們定義了一個非常簡單的函數。然而在軟件開發的過程中,我們需要更多高級的函數,它可以接收多個參數并且帶有返回值。在這一小節中,我們將討論這種函數。

向函數傳遞參數

我們可以像調用其它命令那樣給函數提供參數。我們可以在函數里使用美元 $ 符號訪問到這些參數。例如,$1 表示第一個參數,$2 代表第二個參數,以此類推。

讓我們修改下之前的函數,讓它以參數的形式接收信息。修改后的函數就像這樣:

functionprint_msg{

echo"Hello $1"

}

在上面的函數中我們使用 $1 符號訪問第一個參數。讓我們執行這個函數:

$ print_msg "LinuxTechi"

執行完后,生成如下信息:

Hello LinuxTechi

從函數中返回數值

跟其它編程語言一樣,Bash 提供了返回語句讓我們可以向調用者返回一些數值。讓我們舉例說明:

functionfunc_return_value{

return10

}

上面的函數向調用者返回 10。讓我們執行這個函數:

$func_return_value

$echo"Value returned by function is: $?"

當你執行完,將會產生如下的輸出結果:

Value returned by function is: 10

提示:在 Bash 中使用 $? 去獲取函數的返回值。

函數技巧

目前我們已經對 Bash 中的函數有了一些了解。現在讓我們創建一些非常有用的 Bash 函數,它們可以讓我們的生活變得更加輕松。

Logger

讓我們創建一個 logger 函數,它可以輸出帶有日期和時間的 log 信息。

functionlog_msg{

echo"[`date '+ %F %T'` ]: $@"

}

執行這個函數:

$ log_msg "This is sample log message"

執行完,就會生成如下信息:

[ 2018-08-16 19:56:34 ]: This is sample log message

顯示系統信息

讓我們創建一個顯示 GNU/Linux 信息的函數

執行完后會生成以下信息:

在當前目錄下查找文件或者目錄

下面的函數從當前目錄下查找文件或者目錄:

functionsearch{

find. -name$1

}

讓我們使用下面的命令查找 dir4 這個目錄:

$ search dir4

當你執行完命令后,將會產生如下輸出:

./dir1/dir2/dir3/dir4

數字時鐘

下面的函數在終端里創建了一個簡單的數字時鐘:

functiondigital_clock{

clear

while[1]

do

date +'%T'

sleep1

clear

done

}

函數庫

庫是函數的集合。將函數定義在文件里并在當前環境中導入那個文件,這樣可以創建函數庫。

假設我們已經在 utils.sh 中定義好了所有函數,接著在當前的環境下使用下面的命令導入函數:

$ source utils.sh

之后你就可以像調用其它 Bash 命令那樣執行庫中任何的函數了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4883

    瀏覽量

    70093
  • 函數庫
    +關注

    關注

    1

    文章

    84

    瀏覽量

    32615

原文標題:如何在 Linux Shell 編程中定義和使用函數

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何找到DLP4500的API函數庫和說明手冊?

    您好,我買了一塊DLP4500,我是想采用C#編程,想通過調用API函數來重建點云。(C#如何調用API我會) 我看了很多資料,都是一些C++的例子,都沒有理出頭緒,麻煩指點一下。 重建點云,可以直接
    發表于 03-03 06:18

    如何把兩個數據返回給調用函數

    函數的處理結果包含兩個數據,如何把兩個數據返回給調用函數? 第一種,把兩個數據封裝成一個結構體,函數返回結構體。 調用
    的頭像 發表于 01-08 10:15 ?311次閱讀

    TimSort:一個在標準函數庫中廣泛使用的排序算法

    排序算法呢? 本文將帶你走進 TimSort,一個在標準函數庫中廣泛使用的排序算法。 這個算法由工程師 Tim Peters 于 2001 年專為 Python 設計,并自 Python 2.3 版本起
    的頭像 發表于 01-03 11:42 ?392次閱讀

    QT調用動態

    ; } result = myidr_beep(30);//這里函數指針調用dll的idr_beep() 函數 mylib.unload(); if(result &g
    發表于 12-28 16:19

    HAL函數調用示例

    HAL(Hardware Abstraction Layer,硬件抽象層)是STM32等微控制器中常用的,它為開發者提供了訪問和控制硬件設備的接口。以下是一些常用的HAL庫函數及其調用
    的頭像 發表于 12-02 14:01 ?1249次閱讀

    怎么在TMDSEVM6678: 6678自帶的FFT接口和CUDA提供CUFFT函數庫選擇?

    請教一下gpgpu上包括4個Riscv cpu和一個DPU, 沒有6678,要替換原來信號處理用的6678,該怎么在6678自帶的FFT接口和CUDA提供CUFFT函數庫選擇?
    發表于 09-27 07:20

    利用vMeasure eMobilityAnalyzer函數庫分析電機性能

    本文利用vMeasure eMobilityAnalyzer函數庫的克拉克變換功能,將三相電機定子電流或電壓轉換為兩相電流或電壓,幫助工程師更有效地、可視化地分析電機的行為并對控制算法進行針對性的優化,從而提高電機的性能和效率。
    的頭像 發表于 09-13 11:37 ?613次閱讀
    利用vMeasure eMobilityAnalyzer<b class='flag-5'>函數庫</b>分析電機性能

    S7-200指令

    S7-200文件是西門子旗下同款編程軟件的可調用數據,可安裝也可直接覆蓋進行使用。常用的數據,簡便方便調用。在PLC
    發表于 07-23 12:29 ?7次下載

    靜態定義的INIT_DEVICE_EXPORT函數并沒有被系統調用,為什么?

    1,將一段代碼編譯成靜態 2,主工程鏈接這個靜態 3,靜態庫里的函數并沒有被主工程調用 4,靜態
    發表于 07-04 06:49

    何在ModelSim添加Xilinx仿真

    今天給大俠帶來在FPGA設計應用何在ModelSim添加Xilinx仿真,話不多說,上貨。 注意:ModelSim一定要安裝在不帶空格的目錄下,即不要安裝在“Progr
    發表于 07-03 18:16

    LabVIEW調用Aspose.dll實現excel讀寫、圖片插入,

    使用labview讀寫excel,有多種方式。 1、使用LV自帶的excel函數庫,缺點是電腦必須安裝相應版本的excel,且容易報各種錯誤。放棄。 2、調用NPOI的dll,免費,不用安裝
    發表于 06-24 17:01

    ESP32如何使用的HF相關函數發送自定義AT指令

    請問如何使用的HF相關函數發送自定義AT指令
    發表于 06-17 07:43

    何在stvd添加被人的使其編譯通過,正常調用

    現有文件為“sm8”格式,請問一下,如何在stvd添加被人的使其編譯通過,正常調用????
    發表于 05-17 07:05

    使用STM32FEBKC6T6開發FOC,如何使用函數庫

    本人使用STM32FEBKC6T6 開發FOC,但是,不知道如何使用她的函數庫, 在ST Motor Control Workbench 4.0生成《stm32f30x_MC_it.c文件》里面
    發表于 05-15 08:22

    如果使用了,庫里面沒被調用過的函數會被編譯嗎?

    如果使用了,庫里面沒被調用過的函數會被編譯嗎?
    發表于 05-11 08:25
    主站蜘蛛池模板: 一日本道加勒比高清一二三 | 东北老女人啪啪对白 | 日本成片视频 | 久久国产精品无码网站 | 色婷婷色99国产综合精品 | 国产在线精彩视频二区 | 久久精品国产99国产精品澳门 | 48pao强力打造免费基地 | 又粗又大的机巴好爽欧美 | 国产亚洲精品久久yy5099 | 国产成年美女毛片80s | 婷婷综合久久 | 97福利影院| 激情丁香网 | 最近观看免费高清视频 | 国模张文静啪啪私拍337p | 在线播放色 | 韩国免费人成在线观看网站 | 久久青草国产精品一区 | 中日韩黄色大片 | 夜夜春夜夜爽 | 特级一级黄色片 | 男人女人的免费视频网站 | 免费一级片在线 | 亚洲综合精品成人啪啪 | 性夜影院午夜看片 | 免费在线观看一级毛片 | 黄色高清视频网站 | 狠狠色丁香久久综合五月 | 龙口护士门91午夜国产在线 | 国产视频精品久久 | 欧美色欧美亚洲高清在线观看 | 天天射久久 | 看毛片网站 | 亚洲网站大全 | 禁h粗大太大好爽好涨受不了了 | 永久国产 | 久久久香蕉视频 | 国色天香网在线 | 尤物久久99热国产综合 | 天天爽夜夜爽夜夜爽精品视频 |