shell脚本生成临时shell脚本(脚本中可能带单引号或者双引号的字符串)

  1. 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 <dst.sh
str="content from mysql"
EOF

你可能感兴趣的:(shell脚本生成临时shell脚本(脚本中可能带单引号或者双引号的字符串))