1

我有一个脚本caller.csh,我在其中调用另一个脚本called.sh。我在(例如)中使用set命令声明了一些变量。我如何在(例如)中使用它们而不将它们作为命令行参数传递?caller.cshset alpha = 10called.shecho $alpha

请注意,脚本called.sh可以独立运行,并且变量也在其中定义。我希望这些变量值被caller.sh. 所以我会使用类似if not defined $alpha, then set alpha =in 的东西called.sh

4

1 回答 1

1

一种方法是将它们设置为环境变量(使用setenv)。

但是,这不是一个好方法。将变量传递给 shell 脚本的接口应该通过命令行选项/参数。如果它是一个 shell 脚本,它应该是独立的。直接从命令行运行它时,您将如何传递相同的参数?

编辑:在更新问题的第二部分之后。使用getopt. 您可以将变量设置为默认值,然后用于getopt覆盖这些值,以防用户将它们作为命令行选项/参数传递。这种方法优于任何类型的全局定义变量。

于 2013-03-23T16:39:59.397 回答