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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

函數(shù)是一段可復(fù)用的代碼。我們通常把重復(fù)的代碼放進(jìn)函數(shù)中并且在不同的地方去調(diào)用它。庫是函數(shù)的集合。我們可以在庫中定義經(jīng)常使用的函數(shù),這樣其它腳本便可以不再重復(fù)代碼而使用這些函數(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ù)接收多個(gè)參數(shù),那么可以像下面這樣寫(類似命令行參數(shù)的使用):

$ my_func arg1 arg2 arg3

定義函數(shù)

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

functionfunction_name{

Body of function

}

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

functionprint_msg{

echo"Hello, World"

}

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

$print_msg

Hello,World

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

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

#!/bin/bash

functionprint_msg{

echo"Hello, World"

}

print_msg

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

$chmod +xfunction.sh

$./function.sh

Hello,World

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

更多函數(shù)用法

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

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

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

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

functionprint_msg{

echo"Hello $1"

}

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

$ print_msg "LinuxTechi"

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

Hello LinuxTechi

從函數(shù)中返回?cái)?shù)值

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

functionfunc_return_value{

return10

}

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

$func_return_value

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

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

Value returned by function is: 10

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

函數(shù)技巧

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

Logger

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

functionlog_msg{

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

}

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

$ log_msg "This is sample log message"

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

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

顯示系統(tǒng)信息

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

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

在當(dāng)前目錄下查找文件或者目錄

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

functionsearch{

find. -name$1

}

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

$ search dir4

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

./dir1/dir2/dir3/dir4

數(shù)字時(shí)鐘

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

functiondigital_clock{

clear

while[1]

do

date +'%T'

sleep1

clear

done

}

函數(shù)庫

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

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

$ source utils.sh

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

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

    關(guān)注

    30

    文章

    4955

    瀏覽量

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

    關(guān)注

    1

    文章

    84

    瀏覽量

    32919

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    嵌入式開發(fā)常用函數(shù)速查表

    在嵌入式開發(fā),掌握常用函數(shù)的用法可以大大提高開發(fā)效率。無論是單片機(jī)初學(xué)者還是有一定經(jīng)驗(yàn)的工程師,熟悉函數(shù)庫調(diào)用方式都是必備技能。今天,我們?yōu)榇蠹艺硪环萸度胧介_發(fā)常用
    的頭像 發(fā)表于 01-19 09:06 ?187次閱讀
    嵌入式開發(fā)常用<b class='flag-5'>函數(shù)</b>速查表

    matlab調(diào)用dll動態(tài)庫函數(shù),死機(jī)問題,如何強(qiáng)行跳出?

    matlab調(diào)用dll動態(tài)函數(shù),例如圖莫斯,發(fā)送數(shù)據(jù)時(shí),經(jīng)常會卡死,是否有辦法限制時(shí)間,比如3秒,沒有回應(yīng),就強(qiáng)行結(jié)束函數(shù)
    發(fā)表于 12-31 10:14

    瑞薩RA系列FSP開發(fā)實(shí)戰(zhàn)指南之DMAC中斷回調(diào)函數(shù)

    調(diào)用R_DMAC_SoftwareStart函數(shù)來發(fā)起軟件觸發(fā)請求信號來啟動DMAC傳輸。
    的頭像 發(fā)表于 12-26 09:25 ?4130次閱讀

    請問怎么封裝函數(shù)庫?

    怎么封裝函數(shù)庫,只留一些回調(diào)函數(shù)和引腳定義,完整程序不讓人看
    發(fā)表于 12-22 13:49

    NORDIC藍(lán)牙芯片NRF54l15的dsp支持分享

    Cortex-M 系列處理器的 DSP 函數(shù)庫。 ? 2. 開發(fā)環(huán)境集成 (nRF Connect SDK) 當(dāng)你使用 Nordic 官方推薦的nRF Connect SDK (基于 Zephyr RTOS
    發(fā)表于 12-17 16:03

    函數(shù)調(diào)用性能消耗

    函數(shù)調(diào)用對于處理器的性能消耗是很小的,只占有函數(shù)執(zhí)行工作中性能消耗的一小部分。參數(shù)傳入函數(shù)變量寄存器中有一定的限制。這些參數(shù)必須是整型兼容的(char,shorts,ints和floa
    發(fā)表于 12-12 07:50

    labview調(diào)用pylon庫函數(shù)失敗

    在labview中去調(diào)用pylon庫函數(shù)。labview2018(32位),pylon(202506),ni vas,ni vdm均安裝。dll文件為runtime文件下win32
    發(fā)表于 12-11 13:20

    Python調(diào)用API教程

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

    計(jì)算程序執(zhí)行指令數(shù)的函數(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指令,不能直接驗(yàn)證,需要其他方法。因此,我們想到了在C語言中嵌入內(nèi)聯(lián)匯編,分別生成三條指令的接口函數(shù),之后便只需在C語言中調(diào)用者三
    發(fā)表于 10-24 06:52

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

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

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

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

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

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

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

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

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

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