You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中echo捕获变量丢失换行如何解决?保留换行方法求助

解决Bash中变量输出丢失换行的问题

问题根源

在Bash中,直接使用echo $var这类不加双引号的写法时,会触发分词扩展机制:变量中的换行符、制表符等空白字符会被统一替换成空格,导致原始格式丢失。这就是你示例中输出变成a b c的原因。

简化示例的修正方案

只需给变量加上双引号,同时移除不必要的嵌套$(echo ...),就能保留原始换行:

echo "a\nb\nc" | { var=$(cat); echo "$var"; }

执行后输出和原输入一致:

a
b
c

原私钥脚本的修正

针对你的私钥处理脚本,需要两处调整:

  1. 内层echo $var改为echo "$var",保留私钥的换行格式,确保openssl rsa -pubout能正确识别输入;
  2. 外层echo的\n在Bash中默认不解析转义,建议用printf替代以保证跨环境兼容性(或给echo加-e参数)。

修正后的脚本:

echo "pkcs12 here" |\ 
  openssl rsa |\
  { var=$(cat); printf "%s\n%s" "$var" "$(echo "$var" | openssl rsa -pubout)"; }

或者用echo -e(部分系统环境兼容):

echo "pkcs12 here" |\ 
  openssl rsa |\
  { var=$(cat); echo -e "$var\n$(echo "$var" | openssl rsa -pubout)"; }

内容的提问来源于stack exchange,提问作者eeqk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:22:10