我需要以编程方式将此字符串写入CRON,但是当我这样做时:
echo "*/2 * * * * for i in `docker ps -a| grep -v Up | awk '{print $NF}'`; do ~/./check_service.sh $i; done >/dev/null 2>&1" >> mycron
我得到了:
neo4j; do ~/./check_service.sh neo4j; done >/dev/null 2>&1
那么如何才能逃避所有这些特殊字符并阻止脚本被执行。
答案 0 :(得分:3)
使用单引号来防止bash / shell扩展/评估。您还需要转义awk
脚本周围的单引号,如下所示。
$ echo '*/2 * * * * for i in `docker ps -a| grep -v Up | awk '\''{print $NF}'\''`; do ~/./check_service.sh $i; done >/dev/null 2>&1' >> mycron