我试图在我的脚本之外运行一个函数。示例 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"
无法让它工作,所以任何想法都会非常感谢
我试图在我的脚本之外运行一个函数。示例 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"
无法让它工作,所以任何想法都会非常感谢
如果您source
是您的脚本,那么这些函数将在您当前的 shell 中可用:
. ./test.sh
functionName 4 "1.3.4.5"
缺点是源脚本中不在函数中的任何代码都将运行。您可以通过(在源脚本中)进行如下测试来避免这种情况:
if [[ $0 == test.sh ]]
then
Main
fi
这可能就是为什么你有一个主?顺便说一句,你为什么使用全局变量?为什么不在 Main 中声明它们(使用local
)。
在函数内部,$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