Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何准确地回显包含特殊字符的字符串_Bash_Shell - Fatal编程技术网

Bash 如何准确地回显包含特殊字符的字符串

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>

我需要以编程方式将此字符串准确地写入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

因此,如何转义所有这些特殊字符并阻止脚本执行。

使用单引号阻止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

谢谢,作品完美,在允许的情况下会接受答案