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