将$ {}变量传递给awk而不会丢失它

Mik*_*ike 2 variables bash awk sed echo

我有以下字符串This is ${name} ${surname}.这个字符串是不可替代的

现在,我需要更换${name},并${surname}用自己的数据.我想使用sed/awk,但是当我输入时

string="This is ${name} ${surname}"
echo $string | awk '{... gsub() ...}'
Run Code Online (Sandbox Code Playgroud)

然后问题是,awk我只是This is因为已经echo解决了${},因为它是空的.

我不知道我是否可以使用类似的东西

awk <<EOF
This is ${name} ${surname}
EOF
Run Code Online (Sandbox Code Playgroud)

因为我需要把它包装成变量,因为bash是oneliner我不能那样打字

VAR=$(awk <<
This is ${name} ${surname}
EOF)
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间

anu*_*ava 5

使用单引号定义字符串(以避免shell扩展):

string='This is ${name} ${surname}'
Run Code Online (Sandbox Code Playgroud)

然后在awk中使用:

echo "$string" | awk '{print $0}'
This is ${name} ${surname}
Run Code Online (Sandbox Code Playgroud)

你可以看到如何awk获得未扩展的字符串.