首页 > 解决方案 > 在 $'...' 引用的字符串中扩展变量

问题描述

我正在尝试在特定行之后立即附加行

echo $'oSAMPLEINSERT\E:x\n' |vi +/"$search_string" config.txt 

我可以使用变量(例如 $SampleIns)而不是硬编码字符串“SAMPLEINSERT”吗?有人可以帮忙吗

标签: shellunixechovi

解决方案


您可以更改字符串中间的引用上下文。(您的代码实际上已经这样做了:在未引用的上下文和双引号的上下文中+/"$search_string"扩展+/部分)。$search_string

将包含变量的部分放在双引号内,将需要C风格反斜杠转义处理的部分放在 中$'',如下:

echo "o${SampleIns}"$'\E:x\n'

如果包含反斜杠序列,请将它们替换为它们预先SampleIns使用的字面值:printf %b

printf -v SampleInsLiteral '%b' "$SampleIns"
echo "o${SampleInsLiteral}"$'\E:x\n'

推荐阅读