为何Robot Framework执行命令时会给含空格的字符串添加引号?
解决Robot Framework中Run Process执行带空格命令失败的问题
我之前也踩过这个坑!问题根源在于你传递参数的方式不对——Run Process关键字是把每个参数单独传递给目标进程的,不是像在Shell里那样把整个命令串成一个字符串来执行。
你原来的写法:
${X}= Run Process rm -r Desktop\sample.txt
这里你把rm -r当成了第一个参数,Robot Framework看到这个字符串里有空格,就自动给它套上了引号,最终执行的命令变成了"rm -r" /Desktop/Sample.txt——这相当于让Shell去执行一个叫rm -r的命令(而不是rm命令搭配-r参数),肯定会执行失败。
正确的写法
你需要把命令和每个参数拆分成单独的项传递给Run Process:
*** Settings *** Documentation Suite description Library Process *** Test Cases *** Test1 ${X}= Run Process rm -r Desktop/sample.txt
如果你的路径里包含空格(比如Desktop/sample file.txt),直接把路径作为单独参数传递就行,Robot会自动处理空格,完全不需要手动加引号:
${X}= Run Process rm -r Desktop/sample file.txt
额外说明:如果需要Shell解析(比如通配符)
要是你必须依赖Shell的解析能力(比如用*通配符匹配文件),可以加上shell=True参数,这时候你可以把整个命令作为一个字符串传递,但要注意手动给带空格的路径加引号:
${X}= Run Process rm -r "Desktop/sample file.txt" shell=True
不过这种方式不如拆分参数安全,容易出现命令注入的风险,优先推荐拆分参数的写法。
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

