考虑一个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
。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编译的。