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

У меня есть 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

  • Как получится, когда x = abc, ] && echo yes || эхо не возвращается?
  • Проблема при запуске скрипта
  • Каковы нечитаемые символы в сценарии установки Linux Anaconda?
  • Уменьшить резервный файл журнала
  • Фоновый скрипт, выполняемый при входе в систему, прерывается, когда я запускаю tmux в терминале
  • Определите размер резервной копии за 7 дней
  • Как сделать обратный вывод, который уже передан из команд сортировки и вырезания
  • Отступ, как первая строка
  • Для цикла работает, но петли дважды
  • grep переменная в выражении if
  • локально созданный псевдоним не используется, если вызывается с использованием обратных ссылок (`)
  • Interesting Posts

    Как открыть все файлы в текущем каталоге и во всех подкаталогах с помощью vim?

    Не удалось войти в систему. Файл xsession-errors выглядит так, как если бы я понял

    Используйте файл HERE и перенаправляйте вывод команды

    Vi для синтаксиса Cygwin

    Модем не обнаружен (почему я должен использовать usb_modeswitch?)

    Получить заголовок функции C из BASH

    Подстановка команд: разделение на новой строке, но не пробел

    Команда sudo service не найдена при установке mongodb

    Как установить параметры по умолчанию для htop?

    Как убедиться, что только один экземпляр доступа к файлу за один раз в папке?

    rsyslog: Как я могу гарантировать, что rsyslog предоставляет сообщение об ошибке / отладке всякий раз, когда сообщения отбрасываются?

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

    Разница между виртуальными интерфейсами с ifconfig и iproute2

    Как найти, какой шрифт предоставляет определенный символ Unicode?

    Докер: Как получить размер изображения?

    Linux и Unix - лучшая ОС в мире.