麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開(kāi)發(fā) > Linux Shell > 正文

linux shell自定義函數(shù)(定義、返回值、變量作用域)介紹

2020-07-27 19:25:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

linux shell 可以用戶定義函數(shù),然后在shell腳本中可以隨便調(diào)用。下面說(shuō)說(shuō)它的定義方法,以及調(diào)用需要注意那些事項(xiàng)。

一、定義shell函數(shù)(define function)

語(yǔ)法:

[ function ] funname [()]

{

action;

[return int;]

}

說(shuō)明:

  • 1、可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數(shù)。
  • 2、參數(shù)返回,可以顯示加:return 返回,如果不加,將以最后一條命令運(yùn)行結(jié)果,作為返回值。 return后跟數(shù)值n(0-255

實(shí)例(testfun1.sh):

#!/bin/sh fSum 3 2; function fSum() {   echo $1,$2;   return $(($1+$2)); } fSum 5 7; total=$(fSum 3 2); echo $total,$?;sh testfun1.shtestfun1.sh: line 3: fSum: command not found5,73,215

從上面這個(gè)例子我們可以得到幾點(diǎn)結(jié)論:

  • 1、必須在調(diào)用函數(shù)地方之前,聲明函數(shù),shell腳本是逐行運(yùn)行。不會(huì)像其它語(yǔ)言一樣先預(yù)編譯。一次必須在使用函數(shù)前先聲明函數(shù)。
  • 2、total=$(fSum 3 2); 通過(guò)這種調(diào)用方法,我們清楚知道,在shell 中 單括號(hào)里面,可以是:命令語(yǔ)句。 因此,我們可以將shell中函數(shù),看作是定義一個(gè)新的命令,它是命令,因此 各個(gè)輸入?yún)?shù)直接用 空格分隔。 一次,命令里面獲得參數(shù)方法可以通過(guò):$0…$n得到。 $0代表函數(shù)本身。
  • 3、函數(shù)返回值,只能通過(guò)$? 系統(tǒng)變量獲得,直接通過(guò)=,獲得是空值。其實(shí),我們按照上面一條理解,知道函數(shù)是一個(gè)命令,在shell獲得命令返回值,都需要通過(guò)$?獲得。

二、函數(shù)作用域,變量作用范圍

先我們看一個(gè)實(shí)例(testfun2.sh ):

#!/bin/shecho $(uname);declare num=1000;uname(){  echo "test!";  ((num++));  return 100;}testvar(){  local num=10;  ((num++));  echo $num;}uname;echo $?echo $num;testvar;echo $num;sh testfun2.shLinuxtest!1001001111001

我們一起來(lái)分析下上面這個(gè)實(shí)例,可以得到如下結(jié)論:

  • 1、定義函數(shù)可以與系統(tǒng)命令相同,說(shuō)明shell搜索命令時(shí)候,首先會(huì)在當(dāng)前的shell文件定義好的地方查找,找到直接執(zhí)行。
  • 2、需要獲得函數(shù)值:通過(guò)$?獲得
  • 3、如果需要傳出其它類型函數(shù)值,可以在函數(shù)調(diào)用之前,定義變量(這個(gè)就是全局變量)。在函數(shù)內(nèi)部就可以直接修改,然后在執(zhí)行函數(shù)就可以讀出修改過(guò)的值。
  • 4、如果需要定義自己變量,可以在函數(shù)中定義:local 變量=值 ,這時(shí)變量就是內(nèi)部變量,它的修改,不會(huì)影響函數(shù)外部相同變量的值 。

這些,是我在工作中,對(duì)linux ,shell 函數(shù)使用一些經(jīng)驗(yàn)總結(jié),有沒(méi)有提到地方,歡迎交流!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲日本高清 | 精品国产一区二 | 欧美在线a | 国产乱淫a∨片免费视频 | 久久亚色| 黄在线观看在线播放720p | 欧美一级二级毛片视频 | 一级毛片电影网 | 久久久三区 | 国内精品免费一区二区2001 | 线观看免费完整aaa 欧美在线一级 | 国产1区2区在线观看 | 夜添久久精品亚洲国产精品 | pornoⅹxxxxhd麻豆 | 97黄色网| 黄色毛片一级 | 欧美激情区 | 国产精品一区在线免费观看 | 国产亚洲精品久久久久久网站 | h视频免费看 | 精品一区二区在线播放 | 九九精品视频观看 | asian超清日本肉体pics | 午夜精品福利影院 | 欧美日韩在线播放 | 亚洲va久久久噜噜噜久牛牛影视 | 欧美亚洲一区二区三区四区 | 成人午夜视频在线观看免费 | 欧美一极视频 | 久久亚洲精品久久国产一区二区 | 91短视频网址 | 中国a毛片| 欧美日韩免费看 | 久久华人 | 久久久久久久一区二区三区 | 色婷婷久久一区二区 | 毛片网站网址 | 黄色免费不卡视频 | 国产精品免费一区二区三区都可以 | 成人一级毛片 | 欧美自拍三区 |