在期望脚本中转义双引号

时间:2012-12-12 07:27:16

标签: perl expect

#!/usr/bin/perl

$command = "SetBaseStationParam(\\\"PDP_ACTIVATION_REJECT\\\",0);"
system (boa.exp $command);

boa.exp脚本将此命令登录到linux机器并执行脚本。

# /Usr/bin/expect 
set timeout 5
set arg1 [lindex 0]
spawn ssh root@10.xx.xx.xx

expect "password:" 
send "pass\r"
expect "$" 

send "$arg1\r"
expect "$"

但是这个脚本正在删除命令中的第一个双引号并将其打印为

输出

SetBaseStationParam(\PDP_ACTIVATION_REJECT",0);

预期输出

SetBaseStationParam("PDP_ACTIVATION_REJECT",0);

如果有任何解决方案,请告知我们

1 个答案:

答案 0 :(得分:6)

使用双反斜杠时,它会转义反斜杠,因此转义引号的正确方法是\"

但是,更好的解决方案是使用qq()。它可以与各种字符一起用作分隔符,例如|

$command = qq|SetBaseStationParam("PDP_ACTIVATION_REJECT",0)|;

或者在您的情况下,甚至使用单引号

$command = 'SetBaseStationParam("PDP_ACTIVATION_REJECT",0)';

你应该知道不使用

use strict;
use warnings;

确实是一个非常糟糕的主意。