如何导出包含*(星号)符号的变量?

时间:2018-06-21 03:17:05

标签: macos cron operating-system environment-variables system

我有一个要导出的cron工作环境变量。

    export CRON="30 * * * * *"

问题是*(星号)将所有文件名带到该文件夹​​中。最终导致错误。 为了快速了解问题,请执行以下操作。

  1. 打开终端(我正在使用Mac)
  2. export TEST="30 *"
  3. echo $TEST
  4. 检查输出

此处输出不会

  

30 *

  

30 and all your files in that folder.

PS:-一个应用程序正在读取此环境变量,需要在某些功能中使用它。 例如:-

cron.schedule(CRON, function(){// some code handling})

1 个答案:

答案 0 :(得分:2)

您的导出命令正常,并且不会导致星号展开。问题是您的echo $TEST。 POSIX Shell的规则导致$TEST的扩展发生在全局扩展之前。因此,您实际上正在执行的操作是:

echo 30 *

如果引用扩展来抑制全局扩展,您将看到期望的结果:

echo "$TEST"

您的问题是一个很好的例子,为什么POSIX 1003 shell行为令人恐惧。因此,许多新的,创新的贝壳(例如鱼和精灵)无法实现这种行为。