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

Rav*_*ash 2 macos cron operating-system system environment-variables

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

    export CRON="30 * * * * *"
Run Code Online (Sandbox Code Playgroud)

问题是 *(星号)带来该文件夹中的所有文件名。最终出现错误。要快速尝试并了解问题,请执行以下操作。

  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})
Run Code Online (Sandbox Code Playgroud)

Kur*_*der 5

您的导出命令没问题,不会导致星号被扩展。问题是你的echo $TEST. POSIX shell 的规则导致 的扩展$TEST发生在 glob 扩展之前。所以你正在做的实际上是这样的:

echo 30 *
Run Code Online (Sandbox Code Playgroud)

如果您引用扩展来抑制 glob 扩展,您将看到您所期望的:

echo "$TEST"
Run Code Online (Sandbox Code Playgroud)

你的问题是一个很好的例子,为什么 POSIX 1003 shell 行为很糟糕。许多新的、创新的贝壳,如鱼和精灵,都没有实现这种行为。