繁体   English   中英

如何使用bash在文本文件中执行命令替换

[英]How to do command substitution in text file with bash

如何使用bash在文本文件中执行命令替换。 是否有任何命令像此处文档一样对待文本文件(可能的字符串)?

# export NAME=John
# cat <<'EOF' > template
Hello, ${NAME}
Date: $(date)
EOF
# some-magic < template
Hello, ${NAME}
Date: Fri 02 Aug 2019 04:01:48 PM CEST

我知道, envsubst可以进行变量替换,但不能进行命令替换。

# envsubst < template 
Hello, John
Date: $(date)

预期的输出类似于此处没有NAME扩展的文档行为。

# export NAME=John
# cat <<EOF
Hello, ${NAME}
Date: $(date)
EOF
Hello, John
Date: Fri 02 Aug 2019 04:01:48 PM CEST

谢谢,扬

这可能会解决问题: echo -e "$(eval "echo -e \\"`<FILE`\\"")"

例:

$ cat FILE
Using: ${SHELL}
Date: $(date)
$ echo -e "$(eval "echo -e \"`<FILE`\"")"
Using: /bin/bash
Date: Fri Aug  2 10:06:59 PDT 2019

说明:替换整个输入文件与命令echo -e \\"`<FILE`\\"eval审视你们它(执行命令/变量替换),然后echo与命令序列保留原始新行和这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM