我用谷歌搜索了几个小时,无法找到解决以下问题的方法(至少我找不到一个我能理解和适应的方法)。
我的cwd是:
/home/ubuntu/data/modelling/Iamvariable/Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS
我需要提供"文本"在Var1
和Var2
之后。
我想从右到左扫描pwd输出,因为文件路径启动可能会改变,但Iamvaribale
之后开始的路径将始终保持不变。通过路径中的元素数量除了Iamvaribale
(当然还有Var1
和Var2
),文件夹名称也将保持不变。
我怎样才能在bash sricpt中实现这一目标?
Var1 =
Var2 =
编辑:
/home/ubuntu/data/modelling/Iamvariable/Var1/PRODUCTION/ANALYSIS/Var2/DIHEDRALS
基本上所有大写字母都是固定的。如果没有简单的解决方案
/home/ubuntu/data/modelling
未修复,可以设置为固定。但最好不要修复它,让它更灵活。
答案 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"
#
从参数末尾开始删除%
。加倍字符意味着将删除最大可能的字符串。