bash – 如何在文本文件中展开shell变量?

前端之家收集整理的这篇文章主要介绍了bash – 如何在文本文件中展开shell变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑一个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编译的.

这个解决方案并不优雅,但它确实有效.创建一个脚本调用shell_expansion.sh:
echo 'cat <<END_OF_TEXT' >  temp.sh
cat "$1"                 >> temp.sh
echo 'END_OF_TEXT'       >> temp.sh
bash temp.sh >> "$2"
rm temp.sh

然后,您可以按如下方式调用此脚本:

bash shell_expansion.sh Text_File.msh Text_File_expanded.msh

猜你在找的Bash相关文章