吴忠躺衫网络科技有限公司

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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è)簡(jiǎn)單的函數(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ù)。現(xiàn)在讓我們執(zhí)行這個(gè)腳本:

$chmod +xfunction.sh

$./function.sh

Hello,World

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

更多函數(shù)用法

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

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

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

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

functionprint_msg{

echo"Hello $1"

}

在上面的函數(shù)中我們使用 $1 符號(hào)訪問第一個(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í)行完,將會(huì)產(chǎn)生如下的輸出結(jié)果:

Value returned by function is: 10

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

函數(shù)技巧

目前我們已經(jīng)對(duì) Bash 中的函數(shù)有了一些了解。現(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í)行完,就會(huì)生成如下信息:

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

顯示系統(tǒng)信息

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

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

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

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

functionsearch{

find. -name$1

}

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

$ search dir4

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

./dir1/dir2/dir3/dir4

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

下面的函數(shù)在終端里創(chuàng)建了一個(gè)簡(jiǎn)單的數(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4825

    瀏覽量

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

    關(guān)注

    1

    文章

    84

    瀏覽量

    32471

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TimSort:一個(gè)在標(biāo)準(zhǔn)函數(shù)庫中廣泛使用的排序算法

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

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

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

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

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

    利用vMeasure eMobilityAnalyzer函數(shù)庫分析電機(jī)性能

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

    S7-200指令

    S7-200文件是西門子旗下同款編程軟件的可調(diào)用數(shù)據(jù),可安裝也可直接覆蓋進(jìn)行使用。常用的數(shù)據(jù),簡(jiǎn)便方便調(diào)用。在PLC
    發(fā)表于 07-23 12:29 ?7次下載

    靜態(tài)定義的INIT_DEVICE_EXPORT函數(shù)并沒有被系統(tǒng)調(diào)用,為什么?

    1,將一段代碼編譯成靜態(tài) 2,主工程鏈接這個(gè)靜態(tài) 3,靜態(tài)庫里的函數(shù)并沒有被主工程調(diào)用 4,靜態(tài)
    發(fā)表于 07-04 06:49

    ESP32如何使用的HF相關(guān)函數(shù)發(fā)送自定義AT指令

    請(qǐng)問如何使用的HF相關(guān)函數(shù)發(fā)送自定義AT指令
    發(fā)表于 06-17 07:43

    何在stvd添加被人的使其編譯通過,正常調(diào)用

    現(xiàn)有文件為“sm8”格式,請(qǐng)問一下,如何在stvd添加被人的使其編譯通過,正常調(diào)用????
    發(fā)表于 05-17 07:05

    使用STM32FEBKC6T6開發(fā)FOC,如何使用函數(shù)庫

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

    FreeRTOS如何在中斷調(diào)用內(nèi)存分配函數(shù)

    最近在玩FreeRTOS,遇到一個(gè)問題,就是不知如何在中斷調(diào)用內(nèi)存分配函數(shù)。pvPortMalloc函數(shù)中會(huì)
    發(fā)表于 05-08 08:25

    用STM8-MC_KIT來控制BLDC電機(jī),如何調(diào)用PI_Regulator()函數(shù)??

    新手一枚,剛學(xué)習(xí)電機(jī)的控制,現(xiàn)在用STM8-MC_KIT來控制BLDC電機(jī),各功能調(diào)試都OK,滿足測(cè)試要求。在調(diào)試過程,我不能很好地跟蹤到如何調(diào)用PI_Regulator()函數(shù)
    發(fā)表于 04-23 08:17

    函數(shù)多層調(diào)用的主要注意事項(xiàng)分析

    應(yīng)用方案設(shè)計(jì),開發(fā)者經(jīng)常會(huì)碰到某個(gè)子函數(shù)需要多次多級(jí)調(diào)用的情況。
    的頭像 發(fā)表于 03-27 15:36 ?1050次閱讀
    子<b class='flag-5'>函數(shù)</b>多層<b class='flag-5'>調(diào)用</b>的主要注意事項(xiàng)分析

    CMSIS的DSP數(shù)字信號(hào)處理函數(shù)庫應(yīng)用

    為了使用DSP數(shù)據(jù),需要在IAR開發(fā)環(huán)境,對(duì)工程文件選項(xiàng)General的連接設(shè)置,選擇CMSIS DSP。在程序
    發(fā)表于 03-25 10:52 ?1590次閱讀
    CMSIS的DSP數(shù)字信號(hào)處理<b class='flag-5'>函數(shù)庫</b>應(yīng)用

    STM32G HALHAL_init()代碼,為什么SysTick_Config函數(shù)調(diào)用

    STM32G HALHAL_init()代碼,為什么SysTick_Config函數(shù)調(diào)用
    發(fā)表于 03-12 07:46

    怎么在Hightec編譯環(huán)境調(diào)用三角函數(shù),是需要包含某些嗎?

    怎么在Hightec編譯環(huán)境調(diào)用三角函數(shù),sin(),cos(),tan(),求教,是需要包含某些嗎?
    發(fā)表于 02-18 08:44
    鸿运国际| 东城国际| 网上百家乐官网洗码技巧| 百家乐官网发牌规| 玩百家乐去哪个娱乐城最安全 | 大发888娱乐场18| 百家乐官网过两关| 百家乐桌保险| 皇冠网h| 做生意佩戴什么纳财| 大发888怎么注册账号| 百家乐官网返水1.2不限| 赌百家乐的玩法技巧和规则| 百家乐官网手机投注| 百家乐开户送18元| 联博娱乐| 百家乐官网筹码14克粘土| 大发888我发财官网| 百家乐官网赌场娱乐城| 澳门百家乐官网现场游戏| 百家乐网络赌博网| 百家乐官网网站东方果博| 百家乐龙虎| 免费百家乐官网在线| 利博百家乐破解| 百家乐官网网站哪个好| 百家乐筹码真伪| 滨海湾百家乐官网娱乐城| 女优百家乐的玩法技巧和规则| 百家乐官网已破解的书籍| 游戏百家乐的玩法技巧和规则| 太阳会百家乐官网现金网| 如何赢百家乐的玩法技巧和规则| 博彩百家乐官网网址| 免费百家乐倍投| 百家乐官网游戏打水| 水果机破解| LV百家乐官网娱乐城| 鸿发| 闲和庄百家乐娱乐网| 百家乐官网微笑玩法|