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

时间:2019-08-02 14:12:49

标签: 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

谢谢, 扬

1 个答案:

答案 0 :(得分:0)

这可能会达到目的: 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保留原始换行符等。

相关问题