我有一个关于我的问题的最小示例,它正在尝试安装一个如下所示的 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 环境变量中的引号。
为了添加更多上下文,我不仅仅是在手动编写的 crontab 中编写变量。这个 crontab 由 [whenever][1] (一个 Ruby gem)生成,其中大约有 70 个条目,它获取所有环境变量并将它们作为变量放入 crontab 中,以便脚本可以使用所有凭据。问题是,最近我添加了一个包含引号的复杂的,这破坏了这个系统。
如果您好奇,生成变量的 Ruby 代码是:
ENV.each do |key, value|
env key.to_sym, value.inspect
end
据我所知,crontab 变量不能有引号,而且长度也不能超过 999 个字符。这个问题的答案是根本不可能。