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

旧版Bash下替代`readarray -d / -t`实现路径拆分的问题咨询

Bash 4.2 环境下路径拆分方案验证

三条readarray命令的预期执行结果

首先明确readarray -d / -t的核心行为:

  • 以/作为唯一的输入拆分分隔符,默认的换行符不会触发拆分
  • -t参数会自动移除每个拆分元素末尾的分隔符/
  • 输入末尾如果没有分隔符/,剩余的所有内容(包括换行、控制字符等)会完整保留为最后一个元素

以下是对应命令的输出结果(基于echo默认追加换行符的前提):

  1. 命令:readarray -d / -t arr < <(echo /home/fravadona)
    输出:
declare -a arr='([0]="" [1]="home" [2]=$'fravadona\n')'
  1. 命令:readarray -d / -t arr < <(echo /home/fravadona/)
    输出:
declare -a arr='([0]="" [1]="home" [2]="fravadona" [3]=$'\n')'
  1. 命令:readarray -d / -t arr < <(echo /home/fravadona/$'\n'/underneath)
    输出:
declare -a arr='([0]="" [1]="home" [2]="fravadona" [3]=$'\n' [4]=$'underneath\n')'

如果用printf "%s"代替echo,避免末尾多余换行的影响,拆分结果会和路径本身的结构完全一致,最后一个元素不会携带额外的换行符。

自定义路径拆分脚本的正确性验证

你编写的脚本可以100%模拟readarray -d / -t的功能,不存在兼容问题:

  • 该方案基于Bash参数扩展实现,全程不依赖IFS、不做行读取操作,不会被文件名中的换行、控制字符等特殊字符打断
  • 对开头带/、末尾带/、中间含特殊字符的路径都能正确拆分,拆分结果和readarray -d / -t完全一致
  • 兼容Bash 3.0及以上所有版本,完全适配你使用的Bash 4.2.46环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:02