我有一个脚本caller.csh
,我在其中调用另一个called.sh
。我在set
中使用caller.csh
命令声明了一些变量(例如set alpha = 10
)。如何在called.sh
(例如echo $alpha
)中使用它们而不将它们作为命令行参数传递?
请注意,脚本called.sh
可以独立运行,变量也在其中定义。我希望这些变量值被caller.sh
中的值覆盖。所以我会在if not defined $alpha, then set alpha =
中使用类似called.sh
的内容。
答案 0 :(得分:1)
一种方法是将它们设置为环境变量(使用setenv
)。
然而,这不是一个好方法。将变量传递给shell脚本的接口应该通过命令行选项/参数。如果它是一个shell脚本,它应该是standalone-ish。如果直接从命令行运行它,你还会如何传递相同的参数?
编辑:在更新问题的第二部分之后。使用getopt
。您可以将变量设置为默认值,然后使用getopt
覆盖这些值,以防用户将它们作为命令行选项/参数传递。这种方法优于任何类型的全局定义变量。