我有一个要导出的cron工作环境变量。
export CRON="30 * * * * *"
问题是*(星号)将所有文件名带到该文件夹中。最终导致错误。 为了快速了解问题,请执行以下操作。
export TEST="30 *"
echo $TEST
此处输出不会
30 *
是
30
and all your files in that folder.
PS:-一个应用程序正在读取此环境变量,需要在某些功能中使用它。 例如:-
cron.schedule(CRON, function(){// some code handling})
答案 0 :(得分:2)
您的导出命令正常,并且不会导致星号展开。问题是您的echo $TEST
。 POSIX Shell的规则导致$TEST
的扩展发生在全局扩展之前。因此,您实际上正在执行的操作是:
echo 30 *
如果引用扩展来抑制全局扩展,您将看到期望的结果:
echo "$TEST"
您的问题是一个很好的例子,为什么POSIX 1003 shell行为令人恐惧。因此,许多新的,创新的贝壳(例如鱼和精灵)无法实现这种行为。