Нет способа сделать именно то, что вы просите.
Команда source envFile
и ее альтернатива . envFile
могут быть очень полезны.
Файл envFile будет просто списком параметров среды.
FrontOfficeSystem=MyFrontOffice
BackOfficeSystem=myBackOffice
Когда вы включаете в свой сценарий команду для «источника» envFile (подойдет любое имя), оболочка считывает код, как если бы он был непосредственно в вашем основном сценарии оболочки. Как «включить» во многих языках. Но пространства имен ... Нет. Смотри дальше.
Более полезно: см. косвенные ссылки в расширенных сценариях Bash, это, вероятно, лучше, чем использование eval ...
(см. Ниже), но у меня не было возможности работать с ним.
наконец, вы также можете извлечь выгоду из косвенности eval и varname, т.е.
src=FrontOffice
eval \$${src}System="${src} has data"
src=BackOffice
eval \$${src}System="${src} has data"
Не очень хороший пример, но у меня нет доступа к сценариям, в которых я действительно ездил в город с этой идеей. Это помогло мне обобщить (sp) некоторый код, который в противном случае пришлось бы повторять 10 раз для каждого источника данных (я поместил повторяющийся блок кода в цикл for с именами src в качестве списка элементов для for (каждый ), тогда eval расширит $ {src} System как FrontOfficeSystem, BackOfficeSystem). Если вы наберете пробелы в своих значениях для списка src, все ставки будут отменены.
используйте set -vx
в окне терминала и скопируйте / вставьте код выше, чтобы увидеть, как он работает. Это может помочь.
Надеюсь, это поможет.
P.S. поскольку вы выглядите новым пользователем, если вы получаете ответ, который помогает вам, не забудьте пометить его как принятый и / или дать ему + (или -) в качестве полезного ответа.