【发布时间】:2022-12-11 17:13:44
【问题描述】:
为了重用一些代码和分割我的脚本,我有一个函数来检查一些条件并为脚本执行添加参数。但是,函数完成后,设置的参数不会保留。
这是我的意图的一个简单示例:
#!/usr/bin/env sh
TARGET_FILE="${ENV}.env"
addEnvFile() {
if [ -f "$TARGET_FILE" ]; then
set -- "-env=${TARGET_FILE}"
echo "ARGUMENTS: $*"
fi
}
sampleFn() {
# I need the arguments set in the "addEnvFile" function
echo "CURRENT ARGUMENTS: $*"
}
addEnvFile
sampleFn "$*"
我的目标是让“addEnvFile”函数 (-env=dev.env) 的参数可用于在 sampleFn 中执行命令
【问题讨论】:
-
set --函数内部将修改它自己的参数,而不是调用者的参数。 -
是的,这也是我的理解,这就是为什么我要问“如何”去做,也许还有其他解决方法
-
好吧,解决方法是在主脚本中使用
[ -f "$TARGET_FILE" ] && set -- "-env=${TARGET_FILE}",然后调用sampleFn "$@"