我正在使用Net :: SSH :: Expect模块获取远程服务器上tar文件的行数。如果我尝试打印$ myhash {$ key1} {$ key2}的值,有时会得到不一致的输出。通常输出包含3行
1.命令提示
2. tar命令的实际行数,例如.346732
3.提示
所以我通过考虑它是在输出的第二行来提取我的实际值..就像$ array [1]
但有时我会为数组中的少数项获得奇怪的输出。输出是混合的,或第二行是空白的,任何东西。因为我的$ array [1]逻辑失败,因此脚本失败。我也发现如果该项目的相应文件非常大,比如size = 14903968(并非总是如此)
以下是我的示例代码:
my $ssh = Net::SSH::Expect->new (
host => "hostname.net",
user => 'username',
raw_pty => 1,
);
foreach my $key1 (@array){
$filename = "something_$key1";
$myhash{$key1}{'a'} = $ssh->exec("tar xfzO $path/$filename file1.csv | wc -l");
$myhash{$key1}{'b'} = $ssh->exec("tar xfzO $path/$filename file2.csv | wc -l");
}
$ssh->close();
如果array [1]逻辑不能按预期工作,如何获得实际行数?