如何在bash脚本中运行带参数的函数

时间:2012-07-04 11:01:24

标签: shell

我试图在我的脚本之外运行一个函数。示例test.sh:

DAYS=10
IP=1.2.3.4

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

 functionName() {
   echo $1
   echo "$2"
   }
从命令行

我正在尝试使用不同的参数运行脚本函数

./test.sh functionName 4 "1.3.4.5"

无法让它工作,所以任何想法都会很棒,谢谢

2 个答案:

答案 0 :(得分:1)

如果你source你的脚本,那么这些函数将在你当前的shell中可用:

. ./test.sh
functionName 4 "1.3.4.5"

缺点是源操作脚本中不在函数中的任何代码都将运行。您可以通过(在源代码中)执行类似的测试来避免这种情况:

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

这可能就是为什么你有一个主?顺便问一下,为什么要使用全局变量?为什么不在Main中声明它们(使用local)。

答案 1 :(得分: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