Bash 如何准确地回显包含特殊字符的字符串
我需要以编程方式将此字符串准确地写入CRON,但当我这样做时:Bash 如何准确地回显包含特殊字符的字符串,bash,shell,Bash,Shell,我需要以编程方式将此字符串准确地写入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>
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
因此,如何转义所有这些特殊字符并阻止脚本执行。使用单引号阻止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
谢谢,作品完美,在允许的情况下会接受答案