我正在尝试通过ssh运行Perl正则表达式,但是却收到错误消息“变量名必须包含字母数字字符。”
我要执行的Perl命令是
perl -p -i '.backup' -e ' if ( m/\[MyTag\]/../^$/ ) { s/Item\d+/Item150/ ; }' ~/myFile.txt
我正在使用的SSH命令是
ssh user1@host1 -n " here I'm placing my perl command"
我确实尝试添加\以避免由当前shell转换$符号,以及将ssh duple quota更改为单个,并在perl命令中添加\',但是我总是得到上面的错误或不匹配的错误
我确实在下面尝试
ssh user1@host1 -n "perl -p -i '.backup' -e ' if ( m/\[MyTag\]/../^$/ ) { s/Item\d+/Item150/ ; }' ~/myFile.txt"
ssh user1@host1 -n "perl -p -i '.backup' -e ' if ( m/\[MyTag\]/../^\$/ ) { s/Item\d+/Item150/ ; }' ~/myFile.txt"
ssh user1@host1 -n 'perl -p -i \'.backup\' -e \' if ( m/\[MyTag\]/../^$/ ) { s/Item\d+/Item150/ ; }\' ~/myFile.txt'
也有\ $以及\\ $和更多
请您参考如下方法:
让计算机负责报价:
#!/usr/bin/perl
use Net::OpenSSH;
my $ssh = Net::OpenSSH->new('user1@host1');
$ssh->system('perl', '-p', '-i', '.backup', '-e', <<PERL_CODE, \'~/myFile.txt');
if (m/\[MyTag\]/ .. m/^$/) {
s/Item\d+/Item150/;
}
PERL_CODE




