1. 程式人生 > >shell指令碼 函式傳遞引數

shell指令碼 函式傳遞引數

在一個指令碼中,多個函式之間可能需要相互傳遞引數,之前一直對引數的傳遞以及引用有些疑問,今天做了幾個小測試例子

1、

#!/bin/bash
function f1(){
  local param1=$1
  echo "f1"$param1
  f2 $param1
}
function f2(){
   local param2=$1
   echo "f2"$param2
}
f1 $1
執行結果:./temp2.sh pp
[email protected]:~$ ./temp2.sh pp
f1pp
f2pp
2、
#!/bin/bash
function f1(){
  local param1=$1
  echo "f1"$param1
  f2 $param1
}
function f2(){
   echo "f2"$param1
}
f1 $1
執行結果:./temp2.sh pp
[email protected]:~$ ./temp2.sh pp
f1pp
f2pp
3、
#!/bin/bash
function f1(){
  local param1=$1
  echo "f1"$param1
  f2 $param1
}
function f2(){
   echo "f2"$1
}
f1 $1
執行結果:./temp2.sh pp
[email protected]:~$ ./temp2.sh pp
f1pp
f2pp
4、
#!/bin/bash
function f1(){
  local param1=$1
  echo "f1"$param1
  f2 $param1
}
function f2(){
   echo "f2"$param
}
f1 $1
執行結果:./temp2.sh pp
[email protected]:~$ ./temp2.sh pp
f1pp
f2
由此可見,在引數傳遞時,f2接收f1傳給它的引數,可以直接用f1中的變數名使用,或者用$1使用,或者f2自己建立local變數接收

相關推薦

shell指令碼 函式傳遞引數

在一個指令碼中,多個函式之間可能需要相互傳遞引數,之前一直對引數的傳遞以及引用有些疑問,今天做了幾個小測試例子 1、#!/bin/bash function f1(){ local param1=$1 echo "f1"$param1 f2 $param1 }

Shell指令碼函式定義和函式引數

一、Shell函式 本教程目前為止所有指令碼都是從頭到尾執行。這樣做很好,但你也許已經注意到有些指令碼段間互相重複。 shell允許將一組命令集或語句形成一個可用塊,這些塊稱為shell函式。 shell中函式的定義格式如下: 複製程式碼程式碼如下: 函式名(){     command1   

shell指令碼計算輸入引數的的平均值

方法一: #!/bin/bash [ $# -ne 1 ] && exit #判斷引數個數 [ "$1" -le 0 ] && exit #判斷引數合法性 sum=0 for (( i=1;i<=$1;i=i+1 )) do read -p "Inp

Java中eclipse與命令列向main函式傳遞引數

  我們知道main函式是java程式的入口,main函式的引數型別是String[]。 1.Eclipse中向main方法傳遞引數 例如: public class Mytest { public static void main(String[] args) {

setInterval,setTimeout函式傳遞引數

問題:對setInterval或setTimeout,函式作為計時器的第一個引數時,不能帶引數 setInterval(slip_pic('right'),2500); //錯誤 解決方案: 1.  採用字串形式 setInterval("slip_pic('righ

pthread_create函式詳解(向執行緒函式傳遞引數

一、pthread_create函式: 1、簡介:pthread_create是UNIX環境建立執行緒的函式 2、標頭檔案:#include <pthread.h> 3、函式宣告: int pthread_create(pthread_t* restric

關於JAVA呼叫Python指令碼傳遞引數

JAVA 程式呼叫python指令碼目前存在兩種形式。第一種:運用JAVA本身的自帶功能;第二種:使用jython Jar包的自帶方法來呼叫python指令碼 呼叫準備: 首先你要在本地獲取LINUX環境安裝python環境,如果是JYTHON的話需要安裝JYTHON,兩

python函式傳遞引數方式,值傳遞 or 引用傳遞

首先說說Python中引數傳遞的問題,Python中有可變物件(比如列表List)和不可變物件(比如字串),在引數傳遞時分為兩種情況: 對於不可變物件作為函式引數,相當於C系語言的值傳遞; 對於可變物件作為函式引數,相當於C系語言的引用傳遞。 我們可以分析下樓主的程式碼,引數

shell 指令碼-函式的定義和呼叫

fun() { echo I am function } # invoking function fun fun2() { echo I am functionii2 echo haha } #呼叫函式 X=`fun2` echo $X fun3() { echo

shell指令碼——函式(一)

一.建立函式  有兩種格式可以用來在bash shell指令碼中建立函式.  第一種採用關鍵字function。後跟分配給該程式碼的函式名。    function name {     commands    }    name屬性定義了賦予函式唯一的名稱。指令碼中定義的每

C#--第四周實驗--任務2--定義一個描述座標點的CPoint類,利用(預設引數值)建構函式傳遞引數。(控制檯應用)

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:定義一個描述座標點的CPoint類,利用建構函式傳遞引數。 * 作 者: 雷恆

shell指令碼函式宣告,呼叫

shell指令碼中函式的宣告, 呼叫,處理結果的返回等問題。  1. 函式宣告 1.1 函式需要先聲明後呼叫, 宣告和呼叫有順序要求。 1.2 shell中的函式返回值只能是數字, 返回0表示執行成功, 返回其他型別的值時會報錯:numeric argument req

shell指令碼迴圈讀取引數,檔案批量重新命名

for  ana  in para do do something for ana done 其實就是for in,很簡單。 以下是修改當前檔名的例項,在檔名前加上H265字首: #!/bin/bash for file in `ls *` do mv $fil

25、VS2012中給C++的main函式傳遞引數

接收引數並列印引數的 main 函式,程式碼如下: #include<iostream> using namespace std; int main(int argc,char* argv

指標和引用作為函式傳遞引數

引用傳遞 void OutputNumber(int &nNumber) //設定引用型別引數  {       cout << nNumber << endl; 

shell指令碼函式及傳參

shell函式的定義 shell指令碼的函式位置相對自由,既可以一個shell指令碼單獨成一個函式, 也可以在主程式碼中嵌入內建函式. 在Shell中可以通過下面的兩種語法來定義函式,分別如下: function_name () { statement1

JavaScript如何向回撥函式傳遞引數

在JavaScript中我們可以將函式作為引數進行傳遞,那麼如果被傳遞的函式有引數,我們該如何處理呢? /*被回撥的函式*/ function foo(id){ alert(id); } /*執行回撥的函式*/ function exec(func){

Perl指令碼傳遞引數

          'BIN_DIR' => 'G://mssql2005//MSSQL.1//MSSQL//Binn',          'TRAN_DIR' => 'H://INTEL_TRAN_DUMPS//GDCPW1169',          'DUMP_DIR' => 'H:

Python中函式傳遞引數有四種形式

Python中函式傳遞引數有四種形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四種中最常見是前兩種,基本上一般點的教程都會涉及,後兩種一般很少單獨出現,常用在混合模式中 第一種 fun1(

Java呼叫函式傳遞引數到底是值傳遞還是引用傳遞

今天翻看微信上有關Java技術的公眾號時,看到了一篇關於Java中值傳遞的問題,文章討論了在Java中呼叫函式進行傳參的時候到底是值傳遞還是引用傳遞這個面試時會問到的問題。之前也接觸過類似的問題,但只是知道是值傳遞,具體到為什麼,一直不是太清楚。今天看了一下,算是明白了,