欧美人两个人激情的免费视频_国产亚洲人成网站在线观看不卡_直接看毛片_免费乱理伦片在线观看app

十三年專注于網(wǎng)站建設(shè)與互聯(lián)網(wǎng)應(yīng)用開發(fā),低調(diào)、有情懷的網(wǎng)絡(luò)應(yīng)用服務(wù)商!
南昌百恒科技微信公眾號 掃一掃關(guān)注
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒科技微信公眾號

shell腳本中向函數(shù)傳遞參數(shù)的方法

百恒 2017-08-21 15:21:59 7800
? ? ? ?之前江西網(wǎng)絡(luò)公司小編跟大家提到過這樣一個知識點,bash shell會將函數(shù)當(dāng)作小型腳本來對待。這意味著你可以像普通腳本那樣向函數(shù)傳遞參數(shù)。函數(shù)可以使用標(biāo)準(zhǔn)的參數(shù)環(huán)境變量來表示命令行上傳給函數(shù)的參數(shù)。比如,函數(shù)名會在$0 變量中定義,函數(shù)命令行上的任何參數(shù)都會通過$1、$2等定義。也可以用特殊變量$#來判斷傳給函數(shù)的參數(shù)數(shù)目。在腳本中指定函數(shù)時,必須將參數(shù)和函數(shù)放在同一行,像這樣:?
? ? ? ?func1 $value1 10?
? ? ? ?然后函數(shù)可以用參數(shù)環(huán)境變量來獲得參數(shù)值。那么如何向函數(shù)傳遞參數(shù)呢?今天小編就來給大家舉個用此方法向函數(shù)傳值的例子,讓大家可以更好的理解。?
? ? ? ?$ cat test6?
? ? ? ?#!/bin/bash?
? ? ? ?# passing parameters to a function ?
? ? ? ?function addem { ? ?
? ? ? ?if [ $# -eq 0 ] || [ $# -gt 2 ] ? ?
? ? ? ?then ? ? ??
? ? ? ?echo -1 ? ?
? ? ? ?elif [ $# -eq 1 ] ? ?
? ? ? ?then ? ? ??
? ? ? ?echo $[ $1 + $1 ] ? ?
? ? ? ?else ? ? ??
? ? ? ?echo $[ $1 + $2 ] ? ?
? ? ? ?fi?

? ? ? ?} ?
? ? ? ?echo -n "Adding 10 and 15: "?
? ? ? ?value=$(addem 10 15)?
? ? ? ?echo $value?
? ? ? ?echo -n "Let's try adding just one number: "?
? ? ? ?value=$(addem 10)?
? ? ? ?echo $value?
? ? ? ?echo -n "Now trying adding no numbers: "?
? ? ? ?value=$(addem)?
? ? ? ?echo $value?
? ? ? ?echo -n "Finally, try adding three numbers: "?
? ? ? ?value=$(addem 10 15 20)?
? ? ? ?echo $value?
? ? ? ?$ ?
? ? ? ?$ ./test6?
? ? ? ?Adding 10 and 15: 25?
? ? ? ?Let's try adding just one number: 20?
? ? ? ?Now trying adding no numbers: -1?
? ? ? ?Finally, try adding three numbers: -1?
? ? ? ?$
? ? ? ?text6腳本中的addem函數(shù)首先會檢查腳本傳給它的參數(shù)數(shù)目。如果沒有任何參數(shù),或者參數(shù)多于兩個,addem會返回值-1。如果只有一個參數(shù),addem會將參數(shù)與自身相加。如果有兩個參數(shù),addem會將它們進行相加。?
? ? ? ?由于函數(shù)使用特殊參數(shù)環(huán)境變量作為自己的參數(shù)值,因此它無法直接獲取腳本在命令行中的參數(shù)值。下面的這個例子將會運行失敗,接下來江西網(wǎng)絡(luò)公司小編給大家演示下:?
? ? ? ?$ cat badtest1?
? ? ? ?#!/bin/bash?
? ? ? ?# trying to access script parameters inside a function ?
? ? ? ?function badfunc1 { ? ?
? ? ? ?echo $[ $1 * $2 ]?
? ? ? ?} ?
? ? ? ?if [ $# -eq 2 ]?
? ? ? ?then ? ?
? ? ? ?value=$(badfunc1) ? ?
? ? ? ?echo "The result is $value"?
? ? ? ?else ? ?
? ? ? ?echo "Usage: badtest1 a b"?
? ? ? ?fi?
? ? ? ?$ ?
? ? ? ?$ ./badtest1?
? ? ? ?Usage: badtest1 a b?
? ? ? ?$ ./badtest1 10 15?
? ? ? ?./badtest1: * ?: syntax error: operand expected (error token is "* ?")?
? ? ? ?The result is?
? ? ? ?$?
? ? ? ?盡管函數(shù)也使用了$1和$2變量,但它們和腳本主體中的$1和$2變量并不相同。要在函數(shù)中使用這些值,必須在調(diào)用函數(shù)時手動將它們傳過去。?
? ? ? ?$ cat test7?
? ? ? ?#!/bin/bash?
? ? ? ?# trying to access script parameters inside a function ?
? ? ? ?function func7 { ? ?
? ? ? ?echo $[ $1 * $2 ]?
? ? ? ?}
? ? ? ?if [ $# -eq 2 ]?
? ? ? ?then ? ?
? ? ? ?value=$(func7 $1 $2) ? ?
? ? ? ?echo "The result is $value"?
? ? ? ?else ? ?
? ? ? ?echo "Usage: badtest1 a b"?
? ? ? ?fi?
? ? ? ?$ ?
? ? ? ?$ ./test7?
? ? ? ?Usage: badtest1 a b?
? ? ? ?$ ./test7 10 15?
? ? ? ?The result is 150?
? ? ? ?$
? ? ? ?通過將$1和$2變量傳給函數(shù),它們就能跟其他變量一樣供函數(shù)使用了。?
? ? ? ?關(guān)于向函數(shù)傳遞參數(shù)的方法就已經(jīng)介紹完了,相信大家也有了一定的了解,如有大家還有哪些地方不太明白的,可隨時來電和我們聯(lián)系,百恒網(wǎng)絡(luò)將專業(yè)為您解答。此外,本公司主要從事南昌網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)等服務(wù),是優(yōu)秀的江西網(wǎng)絡(luò)公司之一,經(jīng)驗豐富,技術(shù)嫻熟,如有需要,百恒隨時為您效勞!
400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
售后服務(wù) 售后服務(wù)
 
×