chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

如何在函數(shù)庫中調(diào)用指令?

Linux愛好者 ? 來源:未知 ? 作者:工程師郭婷 ? 2018-08-31 15:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

調(diào)用函數(shù)

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

$ my_func

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

$ my_func arg1 arg2 arg3

定義函數(shù)

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

functionfunction_name{

Body of function

}

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

functionprint_msg{

echo"Hello, World"

}

現(xiàn)在,讓我們執(zhí)行這個函數(shù):

$print_msg

Hello,World

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

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

#!/bin/bash

functionprint_msg{

echo"Hello, World"

}

print_msg

我們已經(jīng)在 function.sh 文件中定義了這個函數(shù)。現(xiàn)在讓我們執(zhí)行這個腳本:

$chmod +xfunction.sh

$./function.sh

Hello,World

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

更多函數(shù)用法

在上一小節(jié)中我們定義了一個非常簡單的函數(shù)。然而在軟件開發(fā)的過程中,我們需要更多高級的函數(shù),它可以接收多個參數(shù)并且?guī)в蟹祷刂怠T谶@一小節(jié)中,我們將討論這種函數(shù)。

向函數(shù)傳遞參數(shù)

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

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

functionprint_msg{

echo"Hello $1"

}

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

$ print_msg "LinuxTechi"

執(zhí)行完后,生成如下信息:

Hello LinuxTechi

從函數(shù)中返回數(shù)值

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

functionfunc_return_value{

return10

}

上面的函數(shù)向調(diào)用者返回 10。讓我們執(zhí)行這個函數(shù):

$func_return_value

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

當你執(zhí)行完,將會產(chǎn)生如下的輸出結(jié)果:

Value returned by function is: 10

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

函數(shù)技巧

目前我們已經(jīng)對 Bash 中的函數(shù)有了一些了解。現(xiàn)在讓我們創(chuàng)建一些非常有用的 Bash 函數(shù),它們可以讓我們的生活變得更加輕松。

Logger

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

functionlog_msg{

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

}

執(zhí)行這個函數(shù):

$ log_msg "This is sample log message"

執(zhí)行完,就會生成如下信息:

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

顯示系統(tǒng)信息

讓我們創(chuàng)建一個顯示 GNU/Linux 信息的函數(shù)

執(zhí)行完后會生成以下信息:

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

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

functionsearch{

find. -name$1

}

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

$ search dir4

當你執(zhí)行完命令后,將會產(chǎn)生如下輸出:

./dir1/dir2/dir3/dir4

數(shù)字時鐘

下面的函數(shù)在終端里創(chuàng)建了一個簡單的數(shù)字時鐘:

functiondigital_clock{

clear

while[1]

do

date +'%T'

sleep1

clear

done

}

函數(shù)庫

庫是函數(shù)的集合。將函數(shù)定義在文件里并在當前環(huán)境中導入那個文件,這樣可以創(chuàng)建函數(shù)庫。

假設(shè)我們已經(jīng)在 utils.sh 中定義好了所有函數(shù),接著在當前的環(huán)境下使用下面的命令導入函數(shù):

$ source utils.sh

之后你就可以像調(diào)用其它 Bash 命令那樣執(zhí)行庫中任何的函數(shù)了。

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

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73053
  • 函數(shù)庫
    +關(guān)注

    關(guān)注

    1

    文章

    84

    瀏覽量

    32897

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    控制流和函數(shù)調(diào)用的精細調(diào)整

    特性,避免不必要的計算。 函數(shù)調(diào)用涉及開銷,因為它需要保存當前執(zhí)行環(huán)境并跳轉(zhuǎn)到新的執(zhí)行環(huán)境。減少函數(shù)調(diào)用,尤其是在頻繁執(zhí)行的循環(huán)中,可以顯著提高性能。 對于簡單且頻繁
    發(fā)表于 11-14 06:32

    Python調(diào)用API教程

    兩個不同系統(tǒng)之間的信息交互。在這篇文章,我們將詳細介紹Python調(diào)用API的方法和技巧。 一、用Requests發(fā)送HTTP請求 使用Python調(diào)用API的第一步是發(fā)送HTTP
    的頭像 發(fā)表于 11-03 09:15 ?301次閱讀

    計算程序執(zhí)行指令數(shù)的函數(shù)實現(xiàn)

    /NMSIS/Core/Include/core_feature_base.h頭文件,以__get_rv_instret為例 其中主要調(diào)用了__RV_CSR_READ函數(shù) 3、追蹤發(fā)現(xiàn)
    發(fā)表于 10-28 06:27

    通過內(nèi)聯(lián)匯編調(diào)用乘法指令mulh\\mulhsu\\mulhu

    mulh、mulhu與mulhsu指令,不能直接驗證,需要其他方法。因此,我們想到了在C語言中嵌入內(nèi)聯(lián)匯編,分別生成三條指令的接口函數(shù),之后便只需在C語言中調(diào)用者三
    發(fā)表于 10-24 06:52

    GCC編譯器,怎么才能實現(xiàn)c文件未被調(diào)用函數(shù),不會被編譯呢?

    GCC編譯器,怎么才能實現(xiàn)c文件未被調(diào)用函數(shù),不會被編譯?有什么編譯選項可以設(shè)置嗎? 移植代碼,有些函數(shù)沒被調(diào)用
    發(fā)表于 09-28 12:25

    告別代碼迷宮!exgnss擴展讓GNSS定位開發(fā)秒變簡單

    提供三種比較經(jīng)典的應(yīng)用模式,可根據(jù)實際項目需求靈活運用。 應(yīng)用模式1:exgnss.DEFAULT 打開gnss后,gnss定位成功時,如果有回調(diào)函數(shù),會調(diào)用回調(diào)函數(shù); 使用此應(yīng)用模式調(diào)用
    的頭像 發(fā)表于 09-10 17:23 ?616次閱讀
    告別代碼迷宮!exgnss擴展<b class='flag-5'>庫</b>讓GNSS定位開發(fā)秒變簡單

    C語言中的內(nèi)聯(lián)函數(shù)與宏

    在C編程,內(nèi)聯(lián)函數(shù)和宏都用于避免函數(shù)調(diào)用的開銷并編寫可復用的邏輯部分,但它們在工作方式和安全性方面存在顯著差異。
    的頭像 發(fā)表于 07-25 15:10 ?1699次閱讀
    C語言中的內(nèi)聯(lián)<b class='flag-5'>函數(shù)</b>與宏

    在ccg3pa何在發(fā)送goodcrc之前了解已收到的數(shù)據(jù)包?

    在 CCG3PA ,考慮到源端正在向匯端發(fā)送Source_Capability或其他信息,此時匯端如何在從匯端發(fā)送GoodCRC之前知道匯端收到了哪些信息? 無論我們收到什么消息,天氣都會開始評估回調(diào)函數(shù)是在GoodCRC 之
    發(fā)表于 05-21 08:12

    verilog模塊的調(diào)用、任務(wù)和函數(shù)

    在做模塊劃分時,通常會出現(xiàn)這種情形,某個大的模塊包含了一個或多個功能子模塊,verilog是通過模塊調(diào)用或稱為模塊實例化的方式來實現(xiàn)這些子模塊與高層模塊的連接的.
    的頭像 發(fā)表于 05-03 10:29 ?1247次閱讀
    verilog模塊的<b class='flag-5'>調(diào)用</b>、任務(wù)和<b class='flag-5'>函數(shù)</b>

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

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

    如何把兩個數(shù)據(jù)返回給調(diào)用函數(shù)

    函數(shù)的處理結(jié)果包含兩個數(shù)據(jù),如何把兩個數(shù)據(jù)返回給調(diào)用函數(shù)? 第一種,把兩個數(shù)據(jù)封裝成一個結(jié)構(gòu)體,函數(shù)返回結(jié)構(gòu)體。 調(diào)用
    的頭像 發(fā)表于 01-08 10:15 ?664次閱讀

    EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:C語言中的DSP:從C<b class='flag-5'>調(diào)用</b>匯編類成員<b class='flag-5'>函數(shù)</b>

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

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

    QT調(diào)用動態(tài)

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

    HAL函數(shù)調(diào)用示例

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