51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1857|回复: 2
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-14 14:18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:13
  • 签到天数: 1522 天

    连续签到: 1 天

    [LV.Master]测试大本营

    2#
    发表于 2018-6-26 11:22:05 | 只看该作者
    感谢分享·~
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 01:07 , Processed in 0.061228 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表