0

我试图在我的脚本之外运行一个函数。示例 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"

无法让它工作,所以任何想法都会非常感谢

4

2 回答 2

1

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

. ./test.sh
functionName 4 "1.3.4.5"

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

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

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

于 2012-07-04T11:08:47.400 回答
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
于 2012-07-04T12:59:26.217 回答