Извлечь части текущего рабочего каталога как переменной

Я несколько раз искал Google и не мог найти решение для следующей проблемы (по крайней мере, я не нашел того, что мог понять и адаптировать).

Мой cdd:

/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

не фиксируется, это нормально, чтобы быть установленным как фиксированное. Но было бы лучше, если бы это не было исправлено, чтобы оно было более гибким.

1 ответ

Используйте расширение параметра:

#!/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"

# удаляет с начала, % от конца параметра. Удвоение символа означает, что наибольшая возможная строка будет удалена.

licensed under cc by-sa 3.0 with attribution.