我正在尝试使用gem时创建一个cronjob。
every 1.day, :at => "12:00pm" do
grep_part_of_command = '"@timestamp":"'+Date.today.to_s
command "cat logstash_development.log | grep '#{grep_part_of_command}' > todays_logstash_development.log"
end
我想要实现的目标:
* * * * * /bin/bash -l -c 'cat logstash_development.log | grep '"@timestamp":"2016-04-20' > todays_logstash_development.log'
但是当我打开我的crontab时,我得到的是:
* * * * * /bin/bash -l -c 'cat logstash_development.log | grep '\''"@timestamp":"2016-04-20'\'' > todays_logstash_development.log'
注意grep matcher字符串周围的额外'\'
。
任何人都可以帮我找到我的错误。
答案 0 :(得分:1)
这似乎是对的!每当在任何地方使用单引号时,像!
这样的特殊符号不会在shell中解释。 '\''
是一种在单引号字符串中打印单引号的方法。请尝试以下方法:
echo 'grep '\''"@timestamp":"2016-04-20'\'' > '
将输出:
grep '"@timestamp":"2016-04-20' >
所以,别担心!输出文本是正确的。