加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:26:37 所属栏目:安全 来源:网络整理
导读:考虑一个ASCII文本文件(假设它包含非 shell脚本语言的代码): Text_File.msh: spool on to '$LOG_FILE_PATH/logfile.log';login 'username' 'password';.... 现在,如果这是一个shell脚本,我可以将其作为$sh Text_File.msh运行,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读