You need to enable JavaScript to run this app. 如何将echo输出通过管道传给另一个echo且不使用变量完成切片
优惠活动
大模型
产品
解决方案
定价
更多

如何将echo输出通过管道传给另一个echo且不使用变量完成切片

结论
  • 仅使用原生echo命令无法实现你需要的效果,核心原因是echo的设计逻辑不支持读取管道传递的标准输入流,只能处理传入的位置参数。
原因说明

管道的作用是将前序命令的标准输出作为后序命令的标准输入传递,但echo本身没有读取标准输入的逻辑,不管管道传给它什么内容,它都会直接忽略,只处理执行时传入的参数。你尝试的${?:11}写法也不符合Bash参数扩展的规则,?是特殊状态变量,存储的是上一个命令的退出码,和管道输入的内容完全无关。

不用第三方命令(sed/awk/cut等)的替代实现方案

如果你可以接受不严格限制仅用echo,但要求不使用显式全局变量、不调用外部文本处理命令,可以用以下两种Bash原生方案:

  1. 嵌套参数扩展(要求Bash 4.0及以上版本)
echo "${$(echo "heyyy hello there HRU?"):11}"

这种写法直接将命令替换的结果作为参数扩展的操作对象,不需要额外定义变量。
2. 匿名代码块接收管道输入

echo "heyyy hello there HRU?" | { read input_str; echo "${input_str:11}"; }

这种写法用到了临时的局部变量input_str,不会污染全局变量空间,兼容性比上一种更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:45:04