shell 脚本无法使用 grep 值设置环境变量

shell 脚本无法使用 grep 值设置环境变量

在 shell 脚本中,我想从日志文件中 grep 一个值并将其设置为一个环境的值。在日志文件中,有这样一行:

SOME_PATH=/some/specific/path

在我的 shell 脚本中,我 grepSOME_PATH关键字,得到上面的行并将其与 分开=,但我现在可以设置环境变量:

line=`grep "SOME_PATH" /path/to/the/log.log`
path=${line##*=} 
export SOME_PATH="$path"  #I cannot change the environment variable with this line.

如果我的 bash 文件中只有如下所示的脚本,那么如果我获取 bash 文件,环境变量就会发生变化。

export SOME_PATH=/some/specific/path

答案1

原则上你的解决方案应该有效,但它并不健壮。例如,如果您在greped 文件中的匹配行中有注释(或其他内容),例如:

SOME_PATH=/some/path # this is some path

那么注释也将成为您展开的名称的一部分path。要检查检查路径中实际存在的内容,例如通过printf "'%s'\n" "$path".

请注意,以这种方式设置环境变量只会影响设置它的 shell 实例和任何子进程,但不会影响周围环境。

相关内容