繁体   English   中英

Cat可以从文本文件内联打印变量吗? 重击

[英]Can cat print variables inline from a text file? bash

使用bash,我试图打印整个文本文件,包括文本文件中的变量值,而不是文字文本($ var)。

txtfile.txt

Here is some text. $var1 Here is some more. $var2

用猫

    cat txtfile.txt

版画

这是一些文字。 $ var1这里还有更多。 $ var2

我如何获得它来扩展输出中$ var1和$ var2的值?

执行变量扩展的唯一方法是外壳程序解析一行时。

这只能通过创建一个var:shell要处理的行来完成。

这可以通过命令eval或通过调用sh -c "$var"

这将满足您的要求(这是一个非常不安全的想法):

#!/bin/bash
var1="This is OnE var"
var2="This is var TwO"

while read -r line; do
   eval echo "$line"
done <txtfile.txt

文件txtfile.txt包含:

this is var1=$var1 inside
the file, and var2=$var2.

上面的脚本将输出:

this is var1=This is OnE var inside
the file, and var2=This is var TwO.

一种更安全的方法是自己扩展要允许的变量。 这不会运行使用shell替换插入文件本身的命令, 例如 $(chmod -R 777 ~ | true)

例如: $(sed -r -e "s/\\\\\\$var1\\\\b/$var1/g" -e "s/\\\\\\$var2\\\\b/$var2/g" < file.txt) 您也可以使用perl

请注意,在此示例中,您必须转义$var1$var2内的/分隔符的所有实例。

暂无
暂无

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

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