- echo 重定向dst.sh
比如从数据库中获取到一个字符串,然后要写到一个文件。
a=xxx'ooo'hhhh'eeee$a
a就是从数据库中获取的字符串,比如将shell命令存到数据库,然后其他客户端从数据库中获取命令,写到shell脚本,然后执行shell脚本,就可能出现问题。因为在shell中定义a,因为a是一个字符串,在shell中 首先要保证a中的特殊字符不会被展开,比如最后的$a,那么a=xxx'ooo'hhhh'eeee$a就要变成字符串,最外层就要用单引号括起来,即a='xxx'ooo'hhhh'eeee$a',但是因为字符串中可能含有单引号,就会导致单引号匹配问题。
所以想要原封不动的将a通过shell写到一个shell文件,就必须在写之前将单引号'或者双引号"或者反斜杠\替换成ascii码,然后在写的时候用echo -e 去转换ascii码
echo -e "\x22" 输出双引号
2.here document (cat << EOF)
cat <<EOF >dst.sh
str="content from mysql"
EOF