如何在Bash中将含特殊符号的内容原样赋值给变量,类似PowerShell的@''@
Bash 原样赋值含特殊符号内容到变量的方案
Bash 中完全可以实现类似 PowerShell @''@ 的原样字符串赋值功能,核心是使用包裹单引号分隔符的 Here 文档实现,所有换行、特殊符号、引号都会完整保留,不会被解析。
具体实现步骤
- 核心规则:使用
<<'自定义分隔符'标记内容起始,内容写完后单独一行写相同的分隔符标记结束,起始分隔符必须加单引号,才能确保所有内容不被 Bash 解析。 - 赋值示例(匹配你提供的内容):
# 将内容完整赋值给变量 target_str target_str=$(cat <<'EOF' <p>I have a value</p> <blockquote> <p>view/3dc84ea0-e9fc-11eb-841e-518effe6e821?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(description:'',filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:</p> </blockquote> EOF )
注意事项
- 结束标记(示例中的
EOF)必须单独占一行,前后不能有任何空格、制表符等字符,否则会识别失败 - 如果你需要自动忽略内容行首的制表符,可以将起始标记改为
<<-'EOF',不会影响其他内容 - 赋值完成后执行
echo "$target_str"即可验证内容完整无丢失
内容的提问来源于stack exchange,提问作者Kirill Kiselev
相关产品推荐
相关产品推荐

