[发明专利]一种字符串传递方法、装置、计算机及可读存储介质有效
申请号: | 202010279076.8 | 申请日: | 2020-04-10 |
公开(公告)号: | CN111475234B | 公开(公告)日: | 2023-01-10 |
发明(设计)人: | 张一罡 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F40/126 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 田媛媛 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 字符串 传递 方法 装置 计算机 可读 存储 介质 | ||
本发明公开了一种字符串传递方法、装置、计算机及可读存储介质,该方法包括以下步骤:获得目标字符串,并在目标字符串中的每个特殊字符前添加转义符;特殊字符为无法准确传递至目标脚本的字符;将特殊字符转为ASCII码形式的转码字符,得到转码字符串;将转码字符串通过shell传递给目标脚本;调用目标脚本对转码字符串进行解码,得到目标字符串。相较于现有的复杂转义,本方法实现更为简单,能够有效避免特殊字符被shell特殊处理。
技术领域
本发明涉及计算机软件技术领域,特别是涉及一种字符串传递方法、装置、计算机及可读存储介质。
背景技术
在Linux程序设计中,经常会涉及在程序中调用脚本的场景,在大部分情况下,程序传递给脚本的参数都是比较简单的。但在某些情况下,比如需要将含有多种特殊字符的密码写入文件,那么就涉及到特殊字符的传递。如果在Linux环境中直接将含有特殊字符的字符串作为参数传递给脚本,那么shell会将某些特殊字符预先进行特殊处理。比如“$$”将被作为进程的PID(Process Identification,操作系统里的进程识别号,即进程标识符),也就是说,如果参数字符串含有“$$”,那么脚本接收到的将会是一串表示进程PID的数字字符,这就会导致脚本接收一个错误的参数,进而导致执行出错。
针对于这种情况,就需要对这些含有特殊字符的字符串进行处理。其中一种比较经典的方法是使用字符转义符“\”对特殊字符进行转义。比如$$可以加转义符变成“\$\$”。当特殊字符比较少时,这种方式是可行的,但是当特殊字符数量很多时,或者含有特殊字符的参数很多时,逐个加转义符则会很麻烦。而且在某些情况下,脚本获得这些字符串后,需要将它们写入文件,这样就要对特殊字符进行两层转义,一层用于程序和脚本间参数的传递,一层用于脚本和文件参数的传递。转义的层数过多,就会使得转义过程非常麻烦,容易出现错误。
综上所述,如何有效地解决特殊字符的传递等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种字符串传递方法、装置、计算机及可读存储介质,以Linux程序调用目标脚本时,能够准确无误的将特殊字符传递给目标脚本。
为解决上述技术问题,本发明提供如下技术方案:
一种字符串传递方法,其特征在于,包括:
获得目标字符串,并在所述目标字符串中的每个特殊字符前添加转义符;所述特殊字符为无法准确传递至目标脚本的字符;
将所述特殊字符转为ASCII码形式的转码字符,得到转码字符串;
将所述转码字符串通过shell传递给所述目标脚本;
调用所述目标脚本对所述转码字符串进行解码,得到所述目标字符串。
优选地,将所述特殊字符转为ASCII码形式,得到转码字符串,包括:
将所述特殊字符串转为x+ASCII码形式,得到所述转码字符串。
优选地,将所述特殊字符串转为x+ASCII码形式,得到所述转码字符串,包括:
利用字符串格式化命令,将所述特殊字符串转为x+ASCII码形式,得到所述转码字符串。
优选地,调用所述目标脚本对所述转码字符串进行解码,得到所述目标字符串,包括:
将所述转码字符串中的每一个x替换为\\x;
利用字符串显示命令对所述转码字符串中的转码字符进行解码并更替,得到所述目标字符串。
优选地,所述获得目标字符串,包括:
判断待传递字符串是否包括所述特殊字符;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010279076.8/2.html,转载请声明来源钻瓜专利网。