Расширение параметра оболочки BASH (косвенное)
когда я вхожу echo ${!BASH*}
в моей оболочке я получаю все env vars, имя которых начинается со строки "BASH":
BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
страница bash man довольно сдержанна об этой функции под названием параметр оболочки (косвенное) расширение. Эта информация (синтаксис данного режима подстановки) должна быть где-то, но я не могу найти его.
-
могу ли я сопоставить строку в конце имени переменной?
но в основном
-
могу ли я сопоставить строку в любом месте имени переменной?
Ну и что было бы чудесно
и что-нибудь (*) в любом месте в имени переменной? (в основном перечислите любую переменную внутри цикла for, И кстати это именно то, что я пытаюсь сделать)
1 ответов
насколько я знаю, нет встроенного способа сделать косвенное расширение имени с соответствием в конце имени.
вот команда, с которой вы можете делать то, что хотите:
$ compgen -v | grep -E "HOME$"
это будет соответствовать каждой переменной, имя которой заканчивается в HOME.
изменяя часть grep, вы можете сопоставить любую часть имени переменной.
compgen
- это встроенный bash, предназначенный для использования в сценариях завершения. compgen -v
перечислит все имена переменных. compgen -v BASH
список те же переменные, что и echo ${!BASH*}
, но по одному на строку.