美文网首页
shell脚本生成临时shell脚本(脚本中可能带单引号或者双引

shell脚本生成临时shell脚本(脚本中可能带单引号或者双引

作者: llicety | 来源:发表于2018-01-08 07:56 被阅读0次
  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 <<EOF >dst.sh
str="content from mysql"
EOF

相关文章

网友评论

      本文标题:shell脚本生成临时shell脚本(脚本中可能带单引号或者双引

      本文链接:https://www.haomeiwen.com/subject/iyzrnxtx.html