【发布时间】:2016-12-20 11:38:48
【问题描述】:
我之前在从一个很有效的文件生成一些变量方面得到了一些帮助。
我现在遇到的问题是这个过程是作为一个函数保存的,而声明是在该函数中。
有没有办法使用在函数外部声明的变量?我只是得到一个空白行返回
getVARS () {
while IFS== read -r name value; do
if [[ $name == \#* ]] || [[ $name == \-\-* ]]; then
echo $name" ignored"
else
declare -x "$name=$value"
fi
done < /home/admin/file.dat
unset IFS
}
上面的函数保存在一个单独的脚本中,并以这种方式调用...
. /home/admin/functions
getVARS
echo "$VarA"
【问题讨论】:
-
您可以尝试在函数之外声明这些变量。这样,它们将在能够分配值的函数范围内,一旦函数完成,这些值又将可见。
-
您可以在文件中保存/恢复变量,或者使用命名管道。您可以将函数的输出通过管道传输到其他命令。如果您只需要一个值,您也可以返回一个值。
-
感谢 cmets。我确实需要从文件中读取的所有变量,但理想情况下我希望将它们保留为整洁的函数。我想我可以剥离其中的功能部分,并在需要时将其包含在我的脚本中。
-
你试过
export $name=$value吗? -
@alnet 谢谢,这行得通
标签: bash function shell variables