【发布时间】:2018-04-15 08:14:54
【问题描述】:
我需要将一些环境变量值放到文件中。
cat file
# $VAR
echo $VAR
# text
当我这样做时,envsubst '$VAR $VAR' < file > file 文件变为空。为了解决这个问题,我使用envsubst '$VAR $VAR' < file | tee file 2>&1 >/dev/null。但有时它不起作用,我的意思是文件变空了。第一个问题是为什么有时文件会变空,第二个问题是在 Linux 和 *BSD 和 MacOS 中将环境变量放入文件的真正 Unix 方式是什么?
【问题讨论】:
-
使用:
envsubst < file > file.tmp && mv file.tmp file -
cmd file > file在*nix(unix&Linux) 中是 99.9999% 的错误方法。习惯于使用@anubhava 的模式来进行您需要在*nix中进行的任何简单文件更改。祝你好运。 -
另一个注意事项:
bash不考虑单引号。 -
不是远程特定于
envsubst。当您通过重定向读取和写入同一个文件时,literally any 命令可能会出现此问题。 -
感谢大家的帮助。
标签: bash unix environment-variables