【发布时间】:2021-11-24 07:55:06
【问题描述】:
我有一个名为 VERSION.txt 的文本文件,其中只有一行内容:
2.0.5
我想使用一个 shell 脚本来读取该版本号并将其分配给一个环境变量,如下所示:
export APP_VERSION='2.0.5'
这已经是我能做到的最接近了。
input="VERSION.txt"
while IFS= read -r line
do
export APP_VERSION=$line
echo 'App version is' ${APP_VERSION}
done < "$input"
这似乎可行,但是当我 echo $APP_VERSION 时,我得到一个空白结果。
有什么建议吗?
【问题讨论】:
-
这段代码当然应该将文件的最后一行留在
APP_VERSION变量中。也就是说,您在哪里使用echo检查变量是否已填充?请记住,导出变量仅适用于该进程及其子进程;它不适用于父进程(也就是说,启动您的脚本的程序)。 -
另外,请注意,
echo "App version is ${APP_VERSION}"会更正确——您希望参数扩展位于双引号内,而不是在未引用的上下文中。否则,如果APP_VERSION='*',echo将在当前目录中写入文件名列表,而不是*。另见I just assigned a variable, butecho $variableshows something else!
标签: bash shell environment-variables