bash中多行管道命令后LINENO为何出现不一致问题?
Bash 5.1.0中DEBUG陷阱的$LINENO行号异常问题
在Bash 5.1.0环境下执行以下脚本时,$LINENO输出的行号不符合预期:
trap 'echo $LINENO' DEBUG : (:) | # Add any number of lines here : :
实际返回结果为 3 - 6 - 5,但预期输出应该是 3 - 6 - 7。
触发条件
该问题仅在管道中最后一个命令之前存在至少一个用()创建的子shell时出现。即使最后一个命令跨了任意多行,这些行也不会被计入行号统计。
行为符合预期的脚本变体
无前置子shell(输出
3 - 4 - 6 - 7):trap 'echo $LINENO' DEBUG : : | # Add any number of lines here : :最后一个管道命令与管道符同行(输出
3 - 4 - 5):trap 'echo $LINENO' DEBUG : (:) | : :子shell仅存在于最后一个管道命令(输出
3 - 4 - 8):trap 'echo $LINENO' DEBUG : : | ( : ) :
内容的提问来源于stack exchange,提问作者Arnauld VM
相关产品推荐
相关产品推荐

