#!/usr/bin/perl
$command = "SetBaseStationParam(\\\"PDP_ACTIVATION_REJECT\\\",0);"
system (boa.exp $command);
Run Code Online (Sandbox Code Playgroud)
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 "$"
Run Code Online (Sandbox Code Playgroud)
但是这个脚本正在删除命令中的第一个双引号并将其打印为
输出是
SetBaseStationParam(\PDP_ACTIVATION_REJECT",0);
Run Code Online (Sandbox Code Playgroud)
预期的产出是
SetBaseStationParam("PDP_ACTIVATION_REJECT",0);
Run Code Online (Sandbox Code Playgroud)
如果有任何解决方案,请告诉我
当你使用双反斜杠时,它会逃避反斜杠,所以正确的方法是逃避引用\".
但是,更好的解决方案是使用qq().它可以与各种字符一起用作分隔符,|例如:
$command = qq|SetBaseStationParam("PDP_ACTIVATION_REJECT",0)|;
Run Code Online (Sandbox Code Playgroud)
或者在您的情况下,甚至使用单引号
$command = 'SetBaseStationParam("PDP_ACTIVATION_REJECT",0)';
Run Code Online (Sandbox Code Playgroud)
你应该知道不使用
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
确实是一个非常糟糕的主意.