我试图在我的脚本之外运行一个函数。示例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"
无法让它工作,所以任何想法都会很棒,谢谢
答案 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