Как передать вывод в Ping как STDIN - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть эта команда для удаления части https: // и усечения конца /.

echo https://example.com/ | awk -F '//' {'print $2'} | tr -d '/' 

Как я могу передать вывод команде ping или host как stdin, сделав ее единственной?

example.com

Ожидаемый результат - результат host / ping example.com. Я пробовал следующие команды

echo https://example.com/ | awk -F '//' {'print $2'} | tr -d '/' | ping $ 
echo https://example.com/ | awk -F '//' {'print $2'} | tr -d '/' | ping $1

Я так и не получил ожидаемых результатов.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я нашел ответ, его можно достичь с помощью xargs

echo https://example.com/ | awk -F '//' {'print $2'} | tr -d '/' | xargs ping 

echo https://example.com/ | awk -F '//' {'print $2'} | tr -d '/' | xargs host
0 голосов
/ 15 апреля 2020

Вы можете попробовать это:

echo https://example.com/ |(IFS=/ read http nothing host; ping $host)

IFS разбивает чтение по символу sla sh; скобки необходимы для чтения для работы. Если вам просто нужен пинг, то приведенная выше команда в порядке Или вы можете извлечь имя хоста:

host=$(echo https://example.com/ |(IFS=/ read http nothing host; echo $host))
ping $host
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...