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

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

VAL1="C70AN" VAL2="MBA30" 

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

Как я могу перейти в этот каталог с помощью переменных

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

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

One Solution collect form web for “Извлечь определенный текст из переменной в сценарии оболочки”

Ответ @Anthon совершенно правильный, хотя это подразумевает слишком много ввода IMO. Я предлагаю определить функцию оболочки (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, тоже

bash shell function variable substring

  • Удалить дату и время рекурсивно из имен файлов
  • Как мне получить bash, чтобы дать соответствующую ошибку для файла с окончанием строки Windows?
  • Пример использования / практический пример для встроенного exec Bash
  • Bash работает с несколькими программами и закрывается
  • Поиск каталога рекурсивно для файлов, перечисленных в csv, и скопировать их в другое место
  • Почему тире расширяется \\\\ по-разному до bash?
  • Предотвращать запуск определенных строк скрипта как root
  • Вопрос AIX по команде cp
  • Нельзя использовать псевдоним в скрипте, даже если я его определяю чуть выше!
  • Ссылка на переменные массива bash из другого массива
  • gnu параллельно с ffmpeg не обрабатывает первый файл
  • Linux и Unix - лучшая ОС в мире.