91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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ù)庫。

假設我們已經(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

    文章

    4900

    瀏覽量

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

    關(guān)注

    1

    文章

    84

    瀏覽量

    32712

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    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 設計,并自 Python 2.3 版本起
    的頭像 發(fā)表于 01-03 11:42 ?566次閱讀

    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ā)者提供了訪問和控制硬件設備的接口。以下是一些常用的HAL庫函數(shù)及其調(diào)用
    的頭像 發(fā)表于 12-02 14:01 ?1580次閱讀

    常用SQL函數(shù)及其用法

    SQL(Structured Query Language)是一種用于管理和操作關(guān)系數(shù)據(jù)的編程語言。SQL 提供了豐富的函數(shù)庫,用于數(shù)據(jù)檢索、數(shù)據(jù)更新、數(shù)據(jù)刪除以及數(shù)據(jù)聚合等操作。以下是一些常用
    的頭像 發(fā)表于 11-19 10:18 ?1415次閱讀

    何在Excel靈活運用SUMIF函數(shù)

    在Excel, SUMIF 函數(shù)是一個非常有用的工具,它可以根據(jù)指定的條件對一系列單元格進行求和。 1. 基本用法 SUMIF 函數(shù)的基本語法是: SUMIF(range, criteria
    的頭像 發(fā)表于 10-30 09:53 ?1264次閱讀

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

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

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

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

    RISC-V匯編語言

    寄存器; 執(zhí)行函數(shù)指令; 將返回值存儲到調(diào)用者能夠訪問到的位置,恢復寄存器,釋放局部存儲資源; 返回調(diào)用
    發(fā)表于 08-19 18:07

    S7-200指令

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

    esp32能調(diào)用FFTW的嗎?

    請問有大佬知道esp32能調(diào)用FFTW的嗎,可以的話,方便告知一下怎么調(diào)用嗎,萬分感謝
    發(fā)表于 07-22 08:03
    主站蜘蛛池模板: 色婷婷成人 | 美国色天使 | 电影天堂在线观看三级 | 午夜在线观看免费观看大全 | 色综合久久综精品 | 深爱婷婷激情网 | 狠狠色狠狠色综合日日32 | 男女艹逼软件 | 日韩欧美视频在线一区二区 | 一级毛片aaaaaa免费看 | 拍拍拍成人免费高清视频 | 在线免费视频手机版 | 欧美老汉色 | 高清不卡毛片 | 国产成人小视频 | 天天操天天舔天天干 | 日日噜噜夜夜狠狠tv视频免费 | 大桥未久加勒比女热大陆在线 | 轻点灬大ji巴太大太深了 | 免费观看在线视频 | 午夜久 | 国产一区二区高清在线 | 男女刺激性视频大片 | 日本人亚洲人成人 | 国产欧美日韩综合精品一区二区 | 在线免费观看黄色小视频 | 免费观看黄色网址 | 有码日韩| bt天堂中文在线 | 久久精品美女久久 | 四虎影院黄色片 | 亚洲综合情 | 色老头影视 | 特黄一级视频 | 亚洲天天综合 | 欧美日本一道免费一区三区 | 久久夜色精品国产亚洲噜噜 | 男人的天堂免费视频 | 午夜痒痒网 | 性殴美高清视频 | 狠狠干干 |