unix 如何在crontab中使用带引号的环境变量

zujrkrfu  于 2023-10-18  发布在  Unix
关注(0)|答案(1)|浏览(173)

我有一个关于我的问题的最小例子,它试图安装一个看起来像这样的crontab:

FOO="foo\"bar\"bin"

0 0 1 * * ls

通过运行crontab crontab(我将它保存在一个名为crontab的文件中)。它失败,并出现以下错误:

% crontab crontab
"crontab":0: bad minute
crontab: errors in crontab file, can't install

是转义引号\"导致了这个问题。
如何在crontab的环境变量中转义引号?
我不是在问如何将环境变量添加到shell脚本中。我知道怎么做如果你想知道为什么我的问题是不同的,这里是上下文:我不只是在手动编写的crontab中编写变量。这个crontab是由[whenever][1](一个Ruby gem)生成的,它有大约70个条目,它提取所有的环境变量,并将它们作为变量放在crontab中,这样所有的凭证都可以用于脚本。问题是,最近我添加了一个复杂的,其中有报价,这打破了这个系统。
如果你好奇的话,生成变量的Ruby代码是:

ENV.each do |key, value|
  env key.to_sym, value.inspect
end
hwamh0ep

hwamh0ep1#

据我所知,crontab变量不能有引号,它们的长度也不能超过999个字符。这个问题的答案是,这是不可能的。

相关问题