我正在尝试将标量值传递给系统命令,但一直遇到问题。我不确定为什么。在这个深夜,任何帮助将不胜感激。
我得到的两个错误是:
语法错误;键的不可打印字符。
执行 CMD 查找时出错。
本质上,我试图在命令“命令”中传递一串命令(dbcommand;f;echo;...)。
my $id_to_test = $ids[0];
my $cmd = q{command -c "dbcommand -a app-f fam -d db; f sub=a, device=};
$cmd .= q{$id_to_test};
$cmd .= q{, analog=A; echo -c on; echo -o A_value.txt; /DIS;"};
system $cmd;
#system('command-c "dbcommand-a app-f fam-d db; f sub=a, device=$id_to_test, analog=A; echo -c on; echo -o A_value.txt; /DIS;"');
所以现在我在做:
my $id_to_test = $ids[0];
my $cmd = 'command-c \"dbcommand-a app-f fam -d db; f sub=a, device=';
$cmd .= "$id_to_test";
$cmd .= ', analog=A; echo -c on; echo -o A_value.txt; /DIS;\"';
system $cmd;
我得到了错误:
- 语法错误;cmd 包含无效字符 -- “dbcommand sh: f: command not found -c on -o A_value.txt sh: /DIS: No such file or directory sh:”: command not found
如果我打印 $cmd; 相反,我的双引号前面也有斜杠,这不是我想要的:
command -c \"dbcommand -a app -f fam -d db; find sub=a, device=1234567, analog=A; echo -c on; echo -o A_value.txt; /DIS;\"
确保数组已填充:
我做的第一件事是确保通过声明数组、打开文件然后执行以下操作来正确地向数组添加值:
while (<$fh>) {
#Remove any newline characters from line using the chomp() command.
chomp;
push @ids, "$_";
# print($ids[$index]);
# $index = $index + 1;
# print "$row\n";
}
print join (", ", @ids);
my $array_size = @ids;
print("\n" . $array_size);
当我执行 perl 脚本并在本地打印时*,一切都如预期的那样——打印了值并且数组的大小为 3。
123456789, 123456888, 123456789
3
但是,当我远程打印时,我只得到最后一个元素
, 123456789
3
即使数组的大小也是 3。