51Testing软件测试论坛

标题: shell脚本生成临时shell脚本(脚本中可能带单引号或者双引号的字符串) [打印本页]

作者: 听海——sky    时间: 2018-6-14 14:18
标题: shell脚本生成临时shell脚本(脚本中可能带单引号或者双引号的字符串)
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



作者: qqq911    时间: 2018-6-26 11:22
感谢分享·~
作者: Miss_love    时间: 2020-12-29 10:57
感谢分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2