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

如何在Bash脚本中从固定结构的工作目录路径提取指定变量内容

提取路径中Var1和Var2的Bash脚本方案

我来给你几个灵活的实现方案,完全不需要依赖/home/ubuntu/data/modelling这个可变前缀,完美适配你描述的固定路径结构:

方案一:字符串分割法(最简洁灵活)

利用Bash的字符串截取和数组分割,直接定位Iamvariable之后的内容,完全不关心前缀:

# 获取当前工作目录
current_dir=$(pwd)

# 截取掉"Iamvariable/"之前的所有内容,得到后面的路径段
post_iam_path=${current_dir#*Iamvariable/}

# 按斜杠分割成数组,利用固定结构直接提取目标值
IFS='/' read -r -a path_parts <<< "$post_iam_path"
Var1=${path_parts[0]}  # 第一个元素就是Var1
Var2=${path_parts[3]}  # 第四个元素是Var2(因为中间固定是PRODUCTION/ANALYSIS)

# 输出结果
echo "提取到的Var1: $Var1"
echo "提取到的Var2: $Var2"

逻辑说明:

  • ${current_dir#*Iamvariable/}是Bash的前缀删除语法,会删掉从路径开头到Iamvariable/的所有内容,留下Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS
  • 用IFS='/'把这段路径拆成数组,因为Iamvariable之后的结构完全固定,所以数组索引0对应Var1,索引3对应Var2,非常可靠。

方案二:正则匹配法(带格式校验)

如果需要确保路径严格符合预期结构,可以用正则表达式匹配,同时提取目标值:

current_dir=$(pwd)

# 匹配固定结构的正则,捕获Var1和Var2
if [[ "$current_dir" =~ Iamvariable/([^/]+)/PRODUCTION/ANALYSIS/([^/]+)/DIHEDRALS ]]; then
    Var1=${BASH_REMATCH[1]}
    Var2=${BASH_REMATCH[2]}
    echo "Var1: $Var1"
    echo "Var2: $Var2"
else
    echo "错误:当前路径不符合预期的结构,请检查路径是否正确"
fi

逻辑说明:

  • 正则中的([^/]+)会匹配任意不含斜杠的字符串(也就是单个目录名)
  • 因为中间的PRODUCTION和ANALYSIS是固定大写目录,所以直接写死在正则里,确保只有符合结构的路径才会被匹配,避免错误提取
  • 如果路径不符合格式,会输出提示,增加脚本的鲁棒性。

方案三:逐层反向解析法(逻辑最直观)

如果你觉得字符串操作和正则有点抽象,可以用dirname和basename从当前目录逐层往上找,完全基于目录层级定位:

current_dir=$(pwd)

# 提取Var2:当前目录的父目录就是Var2所在的目录
Var2=$(basename "$(dirname "$current_dir")")

# 提取Var1:从当前目录往上数4层(DIHEDRALS → Var2 → ANALYSIS → PRODUCTION → Var1)
var1_parent_dir=$(dirname "$(dirname "$(dirname "$(dirname "$current_dir")")")")
Var1=$(basename "$var1_parent_dir")

echo "Var1: $Var1"
echo "Var2: $Var2"

逻辑说明:

  • dirname用来获取当前路径的父目录,basename用来获取路径的最后一段目录名
  • 按照固定的层级关系,从DIHEDRALS(当前目录)往上1层是Var2,往上4层就是Var1所在的目录,取它的basename就是Var1。

方案选择建议

  • 优先选方案一:代码简洁,完全不依赖前缀,执行效率高
  • 如果需要路径格式校验,选方案二:能避免非法路径导致的错误提取
  • 如果喜欢直观的目录操作逻辑,选方案三:容易理解和调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:18:05