2012-07-04 59 views
0

我試圖在我的腳本之外運行一個函數。例如test.sh:如何在bash腳本中使用參數運行函數

DAYS=10 
IP=1.2.3.4 

Main { 
    functionName ${DAYS} ${IP} 
    } 

functionName() { 
    echo $1 
    echo "$2" 
    } 

命令行我試圖運行具有不同參數

./test.sh functionName 4 "1.3.4.5" 

有麻煩它的工作,所以任何想法將腳本功能十分感謝

+0

函數必須在調用之前定義。 – ormaaj

回答

1

函數內部,$ 1是傳遞給函數的參數,而不是傳遞給腳本的參數。只要這樣做:

DAYS=${1-10} # set DAYS to first argument, defaulting to "10" 
IP=${2-1.2.3.4} # set IP to 2nd argument, defaulting to "1.2.3.4" 

Main() { 
    functionName ${DAYS} ${IP} 
} 

functionName() { 
    echo $1 
    echo "$2" 
} 
Main 
1

如果您source您的腳本,那麼功能將可在您當前的外殼:

. ./test.sh 
functionName 4 "1.3.4.5" 

缺點是源腳本中不在函數中的任何代碼都會運行。你可以通過(在源腳本)做一個測試,如:

if [[ $0 == test.sh ]] 
then 
    Main 
fi 

這可能是爲什麼你有一個主?順便說一句,你爲什麼使用全局變量?爲什麼不在Main中聲明它們(使用local)。

+0

我只是更新一個由其他人編寫的腳本,只是遵循相同的流程 – daverocks

相關問題