在 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
原则上你的解决方案应该有效,但它并不健壮。例如,如果您在grep
ed 文件中的匹配行中有注释(或其他内容),例如:
SOME_PATH=/some/path # this is some path
那么注释也将成为您展开的名称的一部分path
。要检查检查路径中实际存在的内容,例如通过printf "'%s'\n" "$path"
.
请注意,以这种方式设置环境变量只会影响设置它的 shell 实例和任何子进程,但不会影响周围环境。