将当前工作目录的部分提取为变量

时间:2018-01-15 10:32:54

标签: bash

我用谷歌搜索了几个小时,无法找到解决以下问题的方法(至少我找不到一个我能理解和适应的方法)。

我的cwd是:

/home/ubuntu/data/modelling/Iamvariable/Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS

我需要提供"文本"在Var1Var2之后。

我想从右到左扫描pwd输出,因为文件路径启动可能会改变,但Iamvaribale之后开始的路径将始终保持不变。通过路径中的元素数量除了Iamvaribale(当然还有Var1Var2),文件夹名称也将保持不变。

我怎样才能在bash sricpt中实现这一目标?

Var1 = 
Var2 =

编辑:

/home/ubuntu/data/modelling/Iamvariable/Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS

基本上所有大写字母都是固定的。如果没有简单的解决方案

/home/ubuntu/data/modelling 

未修复,可以设置为固定。但最好不要修复它,让它更灵活。

1 个答案:

答案 0 :(得分:2)

使用参数扩展:

#!/bin/bash
path=/home/ubuntu/data/modelling/Iamvariable/Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS
var1=${path%/PRODUCTION/ANALYSIS/*}
var1=${var1##*/}
echo "$var1"

var2=${path#*/PRODUCTION/ANALYSIS/}
var2=${var2%/*}
echo "$var2"

#从参数末尾开始删除%。加倍字符意味着将删除最大可能的字符串。