Cygwin(或实际的UNIX shell)是否有一些命令可以将名称从另一个名称空间导入当前名称空间,就像在Python中一样?

时间:2011-09-01 08:22:09

标签: shell cygwin

在Python中,我们可以使用“import”将另一个名称空间的名称导入当前名称空间。

同样,在UNIX shell脚本中是否存在类似“命名空间”的概念?如果是这样,那么Cygwin(或实际的UNIX shell)是否有一些命令可以将名称从另一个名称空间导入到当前名称空间,就像在Python中一样?感谢。

注意具有管理员权限的社区成员:我真的认为这个问题是编程问题,而不是“超级用户”问题。如果你不同意,请详细说明原因。非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

没有办法完全满足你的要求。

source envFile命令及其替代. envFile非常有用。

envFile文件只是一个环境分配列表。

FrontOfficeSystem=MyFrontOffice
BackOfficeSystem=myBackOffice

当您在脚本中包含命令以'source'envFile(任何名称都可用)时,shell会将代码读取为直接在主shell脚本中。就像许多语言中的“包含”一样。但名称空间,......不。见下。

更有帮助:在高级Bash脚本中查看indirect references,这可能比使用eval ...更好(如下所示),但我没有机会使用它。

最后,您也可以从eval和varname间接中受益,即

 src=FrontOffice
 eval \$${src}System="${src} has data"

 src=BackOffice
 eval \$${src}System="${src} has data"

不是一个很好的例子,但我无法访问我真正去过城镇的脚本。它帮助我对一些代码进行泛化(sp),否则这些代码必须重复10次,对于每个数据src(我把重复的代码块放在for循环中,src名称作为for的元素列表(每个),然后eval会将$ {src} System扩展为FrontOfficeSystem,BackOfficeSystem)。如果你在src列表的值中使用空格,那么所有的赌注都会关闭。

在终端窗口中使用set -vx并复制/粘贴代码以查看其工作原理。这可能有所帮助。

我希望这会有所帮助。

P.S。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。