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

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

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

shell腳本基礎(chǔ)函數(shù)

FPGA學(xué)姐 ? 來源:FPGA學(xué)姐 ? 2023-05-22 09:19 ? 次閱讀

在bash中定義函數(shù)

97749994-f815-11ed-90ce-dac502259ad0.png

function和函數(shù)名字可以任意省略一個(gè)

需要注意的是,函數(shù)必須在被調(diào)用之前定義

97952038-f815-11ed-90ce-dac502259ad0.png

如果沒有特別標(biāo)注,bash中的變量都是全局變量,即使定義在函數(shù)內(nèi)部,所以在函數(shù)外部也可以使用;反過來也一樣,在函數(shù)外部定義的變量在函數(shù)內(nèi)部也可以使用。例如在函數(shù)內(nèi)部修改變量

#!/bin/bash
update_prefecture()
{
    prefecture=Aomori  ←----- 修改在函數(shù)外部定義的變量的值
    echo "$prefecture"
}
prefecture=Hokkaido  ←----- 定義變量(全局變量)
echo "$prefecture"
update_prefecture
echo "$prefecture"

結(jié)果是

97a9572e-f815-11ed-90ce-dac502259ad0.png

若想定義只作用于函數(shù)內(nèi)部的局部變量可以加local字段

local 變量名=值

對于嵌套調(diào)用的兩個(gè)函數(shù),在外部函數(shù)中定義一個(gè)局部變量prefecture,然后在內(nèi)部被調(diào)用的函數(shù)中修改變量的值,則修改后的結(jié)果對外部函數(shù)也是有影響的,例如:

#!/bin/bash
update_prefecture1()
{
    echo "[update_prefecture1] $prefecture"
    prefecture=Aomori
    echo "[update_prefecture1] $prefecture"
}
update_prefecture2()
{
    local prefecture=Iwate
    echo "[update_prefecture2] $prefecture"
    update_prefecture1
    echo "[update_prefecture2] $prefecture"
}
prefecture=Hokkaido
echo "$prefecture"
update_prefecture2
echo "$prefecture"


$ ./local_param_nest.sh
Hokkaido
[update_prefecture2] Iwate
[update_prefecture1] Iwate   ←----- 內(nèi)部函數(shù)沿用在外部函數(shù)中定義的變量的值
[update_prefecture1] Aomori  ←----- 在內(nèi)部函數(shù)中修改變量值
[update_prefecture2] Aomori  ←----- 外部函數(shù)的值也被修改了
Hokkaido  ←----- 函數(shù)外部的全局變量不受影響

local命令可以使用和declare命令相同的參數(shù)選,例如定義數(shù)組類型的局部變量

local-aprefectures=(IwateMiyagi)

要想在函數(shù)內(nèi)部使用指定的參數(shù),可以使用位置參數(shù)$1, $2

#!/bin/bash
print_argument()
{
    echo "$0 = $0"
    echo "$1 = $1"
    echo "$2 = $2"
    echo "$3 = $3"
    echo "$# = $#"
}
print_argument aaa bbb  ←----- 在調(diào)用函數(shù)時(shí)傳遞參數(shù)

FUNCNAME是bash的一個(gè)數(shù)組類型的變量,里面保存了當(dāng)前運(yùn)行的所有函數(shù)名,通過變量FUNCNAME獲取并輸出函數(shù)名

97d3d5f8-f815-11ed-90ce-dac502259ad0.png





審核編輯:劉清

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

    關(guān)注

    1

    文章

    366

    瀏覽量

    23425
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10189

原文標(biāo)題:shell腳本基礎(chǔ)(五)函數(shù)

文章出處:【微信號:FPGA學(xué)姐,微信公眾號:FPGA學(xué)姐】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【RT-Thread學(xué)習(xí)筆記】結(jié)合案例學(xué)習(xí)調(diào)試shell腳本

    shell編程掃盲系列】結(jié)合真實(shí)案例學(xué)習(xí)如何調(diào)試shell腳本
    的頭像 發(fā)表于 07-29 03:32 ?2125次閱讀
    【RT-Thread學(xué)習(xí)筆記】結(jié)合案例學(xué)習(xí)調(diào)試<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>

    shell腳本進(jìn)階】幾個(gè)常用的shell進(jìn)階腳本

    shell腳本進(jìn)階】幾個(gè)常用的shell進(jìn)階腳本
    的頭像 發(fā)表于 09-19 08:59 ?1919次閱讀
    【<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>進(jìn)階】幾個(gè)常用的<b class='flag-5'>shell</b>進(jìn)階<b class='flag-5'>腳本</b>

    linux shell腳本分享

    今天浩道跟大家分享shell腳本硬核干貨,可以說是拿來即用序列!
    發(fā)表于 02-17 09:13 ?433次閱讀

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?650次閱讀

    Linux shell腳本分享

    今天浩道跟大家分享幾個(gè)Linux運(yùn)維中常用到的shell腳本!
    發(fā)表于 07-18 09:53 ?569次閱讀
    Linux <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>分享

    嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)技術(shù)的是嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門免費(fèi)下載。
    發(fā)表于 09-11 17:15 ?20次下載
    嵌入式和物聯(lián)網(wǎng)的<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>學(xué)習(xí)指南之<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>入門免費(fèi)下載

    shell腳本最簡明的教程

    Shell腳本,就是利用Shell的命令解釋的功能,對一個(gè)純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell腳本就是一系列命令的集合
    的頭像 發(fā)表于 10-16 11:27 ?4859次閱讀
    <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>最簡明的教程

    109個(gè)實(shí)用shell腳本分享

    Shell腳本,就是利用Shell的命令解釋的功能,對一個(gè)純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell腳本就是一系列命令的集合
    的頭像 發(fā)表于 03-16 08:58 ?2653次閱讀

    shell腳本基礎(chǔ)知識

    shell腳本是一個(gè)文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell腳本的本質(zhì)是
    的頭像 發(fā)表于 04-17 15:00 ?1116次閱讀

    剖析Linux shell 函數(shù)實(shí)現(xiàn)

    作為一個(gè)嵌入式 Linux 工程師,肯定需要編寫 shell 腳本進(jìn)行一些自動化工作。剛好,我最近就有類似需求——一鍵交叉編譯 DDS。本著“編寫漂亮代碼的原則”,我用到了 **shell
    的頭像 發(fā)表于 05-12 10:27 ?527次閱讀
    剖析Linux <b class='flag-5'>shell</b> <b class='flag-5'>函數(shù)</b>實(shí)現(xiàn)

    shell腳本基礎(chǔ)函數(shù)

    在bash中定義函數(shù) function和函數(shù)名字可以任意省略一個(gè) 需要注意的是,函數(shù)必須在被調(diào)用之前定義 如果沒有特別標(biāo)注,bash中的變量都是全局變量,即使定義在函數(shù)內(nèi)部,所以在
    的頭像 發(fā)表于 05-22 09:20 ?488次閱讀
    <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>基礎(chǔ)<b class='flag-5'>函數(shù)</b>

    Linux Shell腳本經(jīng)典案例分享

    ? 作為一名 Linux 運(yùn)維工程師,會寫好的腳本不僅能提高工作效率,還能有更多的時(shí)間做自己的事。最近在網(wǎng)上沖浪的時(shí)候,發(fā)現(xiàn)大家對Shell腳本都有“心結(jié)”,要么覺得自己寫出來不好看,要么根本無從下手。 下面分享249個(gè)真實(shí)
    發(fā)表于 06-16 14:03 ?664次閱讀
    Linux <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>經(jīng)典案例分享

    BASH shell腳本篇—函數(shù)

    函數(shù)是代碼重用的最重要方式。Bash函數(shù)可以定義為一組命令,在bash腳本中多次調(diào)用。
    的頭像 發(fā)表于 10-20 16:31 ?1150次閱讀

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個(gè)用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語法錯(cuò)誤,給出建議增強(qiáng)腳本健壯性。
    的頭像 發(fā)表于 12-27 13:43 ?2220次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    Linux從零到精通:最簡單的Shell腳本入門教程

    通過簡單的命令和腳本,實(shí)現(xiàn)對系統(tǒng)的靈活控制和自動化管理。 shell腳本前言 shell腳本入門 she
    的頭像 發(fā)表于 12-05 09:56 ?570次閱讀
    Linux從零到精通:最簡單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門教程