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

Bash中如何用单命令按需从文件描述符读取单行并回显?

寻找替代read v && echo $v的单行Bash命令

我在编写Bash脚本时,通过exec < <(command)的方式重定向了标准输入,之后需要在遍历命令行参数的循环中,根据条件从新的stdin读取一行内容并立即输出。目前用read v && echo $v实现这个逻辑,但总觉得这种写法太间接——就像Python里先把读取的内容存到变量再打印,而不是直接打印读取的结果。

举个最小可复现示例:

exec < <(tr ' ' \\n<<<'10 100 1000')

for i in 1 0 2 0 3 0 4; do
    if ((i == 0)); then
        read v && echo $v  # 尝试用head -1替代,但第一次输出10后,后续调用就没有内容了
    else
        echo $i
    fi
done

我试过用head -1替换,但它只能读取一次stdin的第一行,之后再调用就输出空内容。后来在代码高尔夫场景里找到一个变通方案:把读取的值直接存入循环变量,再统一输出:

for i in 1 0 2 0 3 0 4; do
    if ((i == 0)); then
        read i
    fi
    echo $i
done

不过我还是好奇,有没有现成的、类似read_one_line这样的命令,可以直接完成“读取一行并回显”的操作?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:53:24