【发布时间】:2015-01-29 08:32:03
【问题描述】:
我有许多 Bash 和 Perl 脚本,它们在功能上不相关,但它们在同一个项目中工作是相关的。 它们在同一个项目中工作的事实意味着我通常在每个脚本的顶部指定相同的目录、相同的项目特定命令、相同的关键字。
目前,这并没有让我感到困扰,但我知道将所有这些值放在一个地方会更容易,然后如果发生更改,我可以更改一次值并让各种脚本接受这些更改。
问题是 - 如何最好地声明这些值?在每个脚本中“必需”的单个 Perl 脚本将需要对 Perl 脚本进行较少更改,但不提供 Bash 脚本的解决方案。使用“key=value”格式的配置文件可能更通用,但需要每个脚本来解析配置并且有可能引入问题。有更好的选择吗?使用环境变量?还是 Perl 可以轻松执行和解释的 Bash 特定方式?
【问题讨论】:
-
key=value格式是原生 sh,可以使用.命令获取。它可以很容易地用 perl 解析。 -
做得好,非常真实!我现在觉得自己很愚蠢。
-
您也可以使用
export命令创建全局环境变量。例如:export FOO=2. -
另一个想法:将您的数据放入 shell 脚本中。该脚本将采用一个选项来控制数据的输出方式。调用程序将
eval结果。ssh-agent这样做:eval ssh-agent -c用于 c-shell,eval ssh-agent -s用于 bourne shell。 -
为此,我们使用了一个“源”文件——您可以在运行 perl 之前获取该文件,也可以内联
. SOURCE; echo \$var
标签: bash perl variables configuration perl-module