我正在尝试研究如何使 bash (强制?)扩展字符串中的变量(从文件中加载)。
我有一个名为“something.txt”的文件,内容如下:
hello $FOO world
然后我跑
export FOO=42
echo $(cat something.txt)
这返回:
hello $FOO world
即使设置了变量,它也没有扩展 $FOO。我无法评估或获取文件 - 因为它会尝试执行它(它不是可执行的 - 我只想要插入变量的字符串)。
有任何想法吗?
原文由 Michael Neale 发布,翻译遵循 CC BY-SA 4.0 许可协议
我偶然发现了我认为是这个问题的答案:
envsubst
命令:这输出:
hello 42 world
如果您想继续处理文件中的数据
destination.txt
,请将其推回到这样的文件中:如果它在您的发行版中尚不可用,则它位于 GNU 软件包中
gettext
。@Rockallite
(顺便说一句,envsubst 有一个“功能”,在 https://unix.stackexchange.com/a/294400/7088 解释了仅扩展输入中的一些变量,但我同意转义异常更多方便的。)
这是我的脚本: