gpt4 book ai didi

bash - 如何在文本文件中扩展 shell 变量?

转载 作者:行者123 更新时间:2023-11-29 08:46:39 24 4
gpt4 key购买 nike

考虑一个 ASCII 文本文件(假设它包含非 shell 脚本语言的代码):

Text_File.msh:

spool on to '$LOG_FILE_PATH/logfile.log';
login 'username' 'password';
....

现在,如果这是一个 shell 脚本,我可以将它作为 $ sh Text_File.msh 运行,然后 shell 会自动扩展变量。我想要做的是让 shell 扩展这些变量,然后创建一个新文件作为 Text_File_expanded.msh,如下所示:

Text_File_expanded.msh:

spool on to '/expanded/path/of/the/log/file/../logfile.log';
login 'username' 'password';
....

考虑:

$ a=123
$ echo "$a"
123

所以从技术上讲,这应该可以解决问题:

$ echo "`cat Text_File.msh`" > Text_File_expanded.msh

...但它没有按预期工作,输出文件与源文件相同。

所以我不确定如何实现这一点。我的目标是更容易维护嵌入在我的非 shell 脚本中的目录路径。 这些脚本不能包含任何 UNIX 代码,因为它不是由 UNIX shell 编译的。

最佳答案

此问题已在另一个线程中提出,这是 IMO 的最佳答案:

export LOG_FILE_PATH=/expanded/path/of/the/log/file/../logfile.log
cat Text_File.msh | envsubst > Text_File_expanded.msh

如果在 Mac 上,首先安装 gettext:brew install gettext

见: Forcing bash to expand variables in a string loaded from a file

关于bash - 如何在文本文件中扩展 shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com