Извлечь определенный текст из переменной в скрипте оболочки

Извлечь определенный текст из переменной в скрипте оболочки

У меня есть 2 переменные

VAL1="C70AN"
VAL2="MBA30"

и у меня есть один каталог в моей системе/opt/web/C70/MBA/

Как мне перейти в этот каталог, используя переменные?

напримерcd /opt/web/$VAL1/$VAL2

Как извлечь определенный текст из переменной в скрипте оболочки?

решение1

Ответ @Anthon совершенно правильный, хотя он подразумевает слишком много набора текста, по моему скромному мнению. Я предлагаю определить функцию оболочки (bash) с именем (например) "mycd" в качестве оболочки:

function mycd {
  cd /opt/web/${VAL1:0:3}/${VAL2:0:3}
}

Теперь, независимо от текущих значений переменных $VAR1 и $VAR1, вызов этой функции изменит каталог на ожидаемое местоположение.

Попробуйте выполнить следующий пример в работающем терминале bash, нажимая клавишу ENTER в конце каждого окна строки ввода):

user% cd; pwd
/home/user
user% function mycd { cd /opt/web/${VAL1:0:3}/${VAL2:0:3} }
user% export VAL1="C70AN"; export VAL2="MBA30"
user% mycd
user% pwd
/opt/web/C70/MBA
user%

Этот пример, конечно, требует существования дерева каталогов "/opt/web/C70/MBA" для работы. Если это не так, вы получите сообщение об ошибке типа

bash: cd: /opt/web/C70/MBA: file or directory not found

Этот результат по-прежнему является доказательством правильной работы функции «mycd», поскольку она пытается перейти в вычисленный каталог, который (пока) не существует.

HTH тоже

Связанный контент