Использование Perl для ввода команд - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблемы с чтением Perl при выводе команды.

Рассматриваемая команда: ps | grep |

Я пытаюсь выполнить скрипт следующим образом:

ps  | grep  | script.pl

, где вывод "ps | grep |" будет использоваться в качестве ввода для сценария для вывода состояния и соответствующей команды.

Выход:

0    command1
1    command2
....

Я знаю, что в bash вы можете получить доступ к аргументу, который будет использоваться в качестве ввода, используя "$ #". Где # соответствует его позиции в командной строке. Понятия не имею в Perl.

1 Ответ

0 голосов
/ 14 ноября 2018

<> - это сокращение от <ARGV>.ARGV - это магический дескриптор, который читает из файлов, названных элементами @ARGV, или из STDIN, если @ARGV пусто (как здесь).Поэтому все, что вам нужно сделать, это прочитать, используя <>.

Например,

#!/usr/bin/perl

use strict;
use warnings qw( all );

while (<>) {
   chomp;
   print "Got <$_>\n";
}

Вывод:

$ ps aux | grep pts | ./script.pl
Got <ikegami  22570  0.0  0.0 101028  3460 ?        S    Nov07   0:02 sshd: ikegami@pts/2 >
Got <ikegami  22571  0.0  0.0 129928  3456 pts/2    Ss   Nov07   0:00 -bash>
Got <ikegami  22865  0.0  0.0 127240  2432 pts/2    R+   18:12   0:00 ps aux>
Got <ikegami  22866  0.0  0.0 120540  2160 pts/2    S+   18:12   0:00 grep pts>
Got <ikegami  22867  0.0  0.0 129604  3928 pts/2    R+   18:12   0:00 /usr/bin/perl ./script.pl>

Осталось только извлечь информациювы хотите от данных, которые вы прочитали. Конечно, вы можете просто использовать

ps ah -o tty,command
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...