校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Shell中的函數、函數定義、作用域問題介紹

Shell中的函數、函數定義、作用域問題介紹

熱門標簽:杭州機器人外呼系統 旅游地圖標注大全 excel地址地圖標注 佛山高德地圖標注中心 東莞電銷機器人價格一覽表 地圖標注超出范圍怎么辦 百度地圖的地圖標注 百度地圖標注圖標更換 陜西電銷卡外呼系統怎么安裝

說起函數調用,相信大家也不會陌生,然而對于初學Shell的我來說,Shell中函數調用方式卻有點讓我不太習慣,自己也走了不少的彎路,因為傳遞參數時出了一個很“自然”的錯誤,也讓我吃了不少的苦頭,所以總結一下Shell中函數的調用方法。

一、Shell中函數的定義

為了方便程序和管理和模塊化并減少代碼的重復,函數的確是一個好東西。而Shell中函數的定義有兩種方法,如下:

復制代碼 代碼如下:

function fname()
{
    statements;
}


復制代碼 代碼如下:

fname()
{
    statements;
}

注意,()內是沒有參數的,它并不像C語言那樣,在()里可以有參數。

那大家可能就郁悶了,函數調用或多或少總是會需要一些參數,那么這些參數要怎么傳遞進來呢?其實參數傳遞方式為:fname;(不需要傳遞參數)或fname agr1 arg2(需要傳遞兩個參數);

二、自定義函數的例子

不知道大家的情況如何,反正一開始我就覺得很別扭,因為在C語言中,例如我定義一個函數int cmp(int a, int b),那么我就會在函數中使用到函數頭中聲明的變量a和b,而在Shell中卻沒有定義參數,那我的函數又需要用到這兩個參數,怎么辦好呢?下面就用一個例子來說明好了。

復制代碼 代碼如下:

#! /bin/bash 
# Filename:LoopPrint.sh 
 
function LoopPrint() 

    count=0; 
    while [ $count -lt $1 ]; 
    do 
    echo $count; 
    let ++count; 
    sleep 1; 
    done 
    return 0; 

 
read -p "Please input the times of print you want: " n; 
LoopPrint $n; 

先來說說這個程序的功能吧,就是輸入一個數字n,然后從0開始每隔1秒輸入一個數字,直到輸出n-1為止。首先,程序會要求你輸入一個數學,然后調用函數來進行輸出的功能。

注意注釋1的那一句,里面有一個變量$1,大家應該還記得調用函數時參數的傳遞方式,即fname agr1 arg2,這里的$1就是表示第一個參數,依此類推,$2就是第二個參數,$3就是第3個參數,$n就是表示第n個參數。

所以$1就是變量n的值。這樣說大家懂了吧!

補充一下,就是:

$0:是腳本本身的名字;
$#:是傳給腳本的參數個數;
$@:是傳給腳本的所有參數的列表,即被擴展為"$1" "$2" "$3"等;
$*:是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個,即被擴展成"$1c$2c$3",其中c是IFS的第一個字符;
$$:是腳本運行的當前進程ID號;
$?:是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤;

特別注意,傳遞參數時,(這個例子中)一定要寫成LoopPrint $n;而不能寫成LoopPrint n。為什么?例如你輸入的是20,則n的值($n)為20,前者表示的是把n的值,即20傳遞給函數LoopPrint,而后者則表示把字符n傳遞給函數LoopPrint。這點與在靜態語言中的函數參數傳遞是很不同的,因為在Shell中變量的使用并不需要先定義,所以要使用變量,讓Shell知道它是一個變量,并要傳遞它的值時,就是用$n,而不能直接用n,否則只把n當作一個字符來處理,而不是一個變量。

三、作用域問題

函數的作用域與C/C++語言中的作用約束是一樣的,函數的定義一定要出現在函數的調用語句之前,但是有一點跟C/C++中不一樣的就是變量的作用域問題,經過本人的試驗,在注釋1的語句改為while [ $count -lt $n ];也是可行的,即函數可以使用本文件中出現的任何變量,但是本人還是建議使用上面例子中的方法,即while [ $count -lt $1 ],并且不要隨意使用函數中的變量之外的變量,因為你并不一定知道你調用函數時函數外有什么變量存在也不知道它的值是什么,也不能保證別人在使用你的函數時會傳遞你在函數中使用到的變量名,如這里的n,別人在使用時可能傳遞的就是他自己定義的變量,如Count等。

您可能感興趣的文章:
  • Windows Powershell 定義函數
  • linux shell 自定義函數方法(定義、返回值、變量作用域)
  • Shell 函數參數

標簽:青島 朝陽 西藏 隨州 通遼 雅安 延邊 南充

巨人網絡通訊聲明:本文標題《Shell中的函數、函數定義、作用域問題介紹》,本文關鍵詞  Shell,中的,函數,定義,作用域,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell中的函數、函數定義、作用域問題介紹》相關的同類信息!
  • 本頁收集關于Shell中的函數、函數定義、作用域問題介紹的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产欧美日产一区| 成人动漫中文字幕| 中文字幕在线观看一区| 日韩欧美中文字幕精品| 国产综合成人久久大片91| 久久国产人妖系列| 日韩黄色小视频| 亚洲色欲色欲www| 亚洲人亚洲人成电影网站色| 国产日韩高清在线| 国产亚洲制服色| 久久精品这里都是精品| 久久精品免费在线观看| 久久精品亚洲国产奇米99| 国产精品污网站| 中文字幕免费不卡| 一区二区三区精品在线| 亚洲国产乱码最新视频| 亚洲国产精品综合小说图片区| 亚洲一区影音先锋| 性做久久久久久久久| 精品一区二区三区久久| 国产一区激情在线| 人人精品人人爱| 国产盗摄一区二区| 成人午夜视频免费看| 在线观看日韩电影| 欧美精品丝袜久久久中文字幕| 91精品国产综合久久久久久久久久 | 91精品欧美久久久久久动漫| 91福利社在线观看| 91.麻豆视频| xvideos.蜜桃一区二区| 久久精品一区二区| 午夜精品久久久久久不卡8050| 亚洲成av人片在线观看| 精品一区中文字幕| 色哟哟在线观看一区二区三区| 欧美丝袜丝nylons| 国产亚洲1区2区3区| 综合久久一区二区三区| 美脚の诱脚舐め脚责91| 大尺度一区二区| 欧美中文字幕一区二区三区 | 国产综合色精品一区二区三区| 国产自产v一区二区三区c| 欧美在线免费播放| 欧美成人video| 亚洲综合在线第一页| 久久国产精品区| 99久久免费精品| 欧美精品一区二区精品网| 国产精品电影院| 亚洲精品视频一区| 亚洲成人精品影院| 92国产精品观看| 欧美一区二区女人| 亚洲一区二区三区小说| 国产麻豆精品theporn| 高清免费成人av| 日韩欧美资源站| 亚洲综合一区二区| 在线免费观看一区| 国产日韩高清在线| 国产精品99久久久久久久女警 | 亚洲一区二区精品3399| 国产精品香蕉一区二区三区| 日本精品视频一区二区三区| 国产日产精品一区| 三级欧美在线一区| 在线播放国产精品二区一二区四区| 国产精品乱码一区二区三区软件| 日韩不卡一区二区| 欧美老女人第四色| 日韩黄色小视频| 欧美日韩国产影片| 亚洲h在线观看| 欧亚一区二区三区| 久久久久久久综合色一本| 国产制服丝袜一区| 欧美一区二区福利视频| 麻豆精品国产传媒mv男同| 精品视频色一区| 日韩电影在线看| 欧美色男人天堂| 午夜视频久久久久久| 欧美中文字幕一区二区三区| 亚洲欧美另类久久久精品2019| 91影院在线观看| 亚洲男人的天堂网| 欧美精品日日鲁夜夜添| 亚洲国产精品一区二区www在线| 欧美日本在线观看| 香蕉乱码成人久久天堂爱免费| 成人小视频免费观看| 国产精品乱码一区二三区小蝌蚪| 粗大黑人巨茎大战欧美成人| 久久这里只有精品6| 99久久久国产精品| 亚洲婷婷国产精品电影人久久| 欧美性感一区二区三区| 亚洲成人www| 国产亚洲精品bt天堂精选| 国产成+人+日韩+欧美+亚洲| 伊人性伊人情综合网| 欧美日韩一区二区电影| 国产精品久久久久久久蜜臀| 在线观看一区二区视频| 五月天一区二区三区| 国产视频一区在线播放| 成人18精品视频| 麻豆精品久久久| 欧美激情一二三区| 5566中文字幕一区二区电影| 美女看a上一区| 欧美大片免费久久精品三p| 美美哒免费高清在线观看视频一区二区| 精品91自产拍在线观看一区| 国产福利一区二区三区视频在线| 亚洲香蕉伊在人在线观| 欧美高清性hdvideosex| 成人免费精品视频| 偷拍自拍另类欧美| 日本一区二区成人| 欧美四级电影网| 日韩高清一区二区| 亚洲精品一二三| 久久久精品影视| 日韩欧美亚洲另类制服综合在线| 成人免费看黄yyy456| 久久99国产精品久久99果冻传媒| 中文字幕一区二区三区蜜月| 精品久久五月天| 欧美综合欧美视频| 色综合咪咪久久| 国产在线一区观看| 樱桃国产成人精品视频| 国产欧美综合在线观看第十页| 色吊一区二区三区| 不卡一区在线观看| 黄网站免费久久| 精品一区二区三区久久久| 亚洲在线免费播放| 国产精品久久二区二区| 精品久久久久一区| 欧美中文字幕不卡| 99久久夜色精品国产网站| 久久精品999| 国产乱子轮精品视频| 日韩—二三区免费观看av| 秋霞影院一区二区| 亚洲3atv精品一区二区三区| 五月激情综合婷婷| 玉米视频成人免费看| 亚瑟在线精品视频| 亚洲国产日韩a在线播放| 亚洲成人av资源| 亚洲国产日产av| 免费xxxx性欧美18vr| 三级久久三级久久| 精品在线亚洲视频| 久久国产精品99久久人人澡| 国产精品中文字幕欧美| 九九国产精品视频| 成人精品一区二区三区四区| 国产激情91久久精品导航| 成人av动漫网站| www.亚洲国产| 欧美精品xxxxbbbb| 欧美一级免费大片| 国产日韩欧美综合一区| 国产欧美一区二区精品性| 亚洲人成在线播放网站岛国| 亚洲素人一区二区| 丝袜亚洲另类欧美| 老司机精品视频一区二区三区| 国产精一品亚洲二区在线视频| 国产精品18久久久| 色av成人天堂桃色av| 911国产精品| 中文一区二区在线观看| 亚洲欧洲制服丝袜| 亚洲色图欧美在线| 国产日韩精品久久久| 亚洲欧美激情小说另类| 亚洲成人av中文| 国产**成人网毛片九色 | 欧美亚洲综合一区| 精品国产污网站| 国产精品麻豆一区二区| 三级欧美韩日大片在线看| 久久精品99国产国产精| 在线精品视频一区二区三四| 91精品国产品国语在线不卡| 国产精品乱码人人做人人爱 | 91麻豆精品久久久久蜜臀| 国产欧美视频在线观看| 亚洲欧美一区二区三区孕妇| 国产一区二区在线免费观看| av在线播放一区二区三区|