2012-07-04 58 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

相关问题