5
#!/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);

请让我知道是否有任何解决方案

4

1 回答 1

6

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

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

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

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

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

你应该知道,不使用

use strict;
use warnings;

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

于 2012-12-12T07:30:20.987 回答