有人看到这里的语法有什么问题吗?
CTMPESC=$(sed 's/[\*\.&]/\\&/g' <<<"$CTMP")
crontab -l | sed "/$CTMPESC/d" | crontab -
CTMP等同于这样的简单cron语句:
*/8 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh
我不断收到错误消息:
sed:-e表达式#1,字符5:未知命令:'8'
答案 0 :(得分:2)
如果您想以利用bash功能的方式执行此操作,则根本不需要外部工具,例如grep或sed:
ctmp_content=$(<"$ctmp")
crontab -l | while read -r; do
[[ $REPLY = *"$ctmp_content"* ]] && continue
printf '%s\n' "$REPLY"
done | crontab -
答案 1 :(得分:1)
这里发生的是CTMPESC
中的一个斜杠关闭了模式,并且在它被解释为命令之后发生了什么。你也需要逃避斜杠。
将/
添加到您转义的字符类中:
CTMPESC=$(sed 's/[\*\.&/]/\\&/g' <<<"$CTMP")