我有以下字符串This is ${name} ${surname}
。
这个字符串是不可替代的
现在我需要用自己的数据替换${name}
和${surname}
。我想使用sed / awk,但是当我输入
string="This is ${name} ${surname}"
echo $string | awk '{... gsub() ...}'
然后问题是awk
我只传递了This is
,因为echo
解析了${}
这是空的。
我不知道我是否可以使用
之类的东西awk <<EOF
This is ${name} ${surname}
EOF
因为我需要将它包装到变量中,因为bash是oneliner我不能像那样输入
VAR=$(awk <<
This is ${name} ${surname}
EOF)
感谢您的时间
答案 0 :(得分:5)
使用单引号定义字符串(以避免shell扩展):
string='This is ${name} ${surname}'
然后在awk中使用:
echo "$string" | awk '{print $0}'
This is ${name} ${surname}
您可以看到awk
如何获得未展开的字符串。
答案 1 :(得分:2)
简单的shell怎么样:
template='This is ${name} ${surname}'
name=Peter
surname=Falk
eval "echo $template"
将打印
This is Peter Falk
您是否有任何特殊原因要使用awk
来执行此简单任务?