Я хотел бы запустить одновременно traceroute -w2
и traceroute6 -w2
в сценарии оболочки, чтобы опробовать несколько разных хостов.
Наивный подход может просто использовать временную переменную, чтобы собрать все хосты внутри (например, установить HOSTS
в ordns.he.net one.one.one.one google-public-dns-a.google.com
), а затем просто передать ее по отдельности каждой команде, например, echo $HOSTS | xargs -n1 traceroute -w2
и др., Но в tcsh
это будет работать иначе, чем в bash
, и может привести к ошибкам, если вы захотите добавить больше команд (как если бы вы добавляли их как код, а не как список действий), и я Я думаю, что есть какой-то лучший способ объединить список команд (например, имя команды с одним параметром) со списком аргументов (например, имена хостов в нашем примере), чтобы оболочка выполняла все возможные комбинации.
Я пытался создать комбинацию xargs -n1
(для хостов) и xargs -n2
(для команд с одним параметром), соединяя друг с другом, но это не имело особого смысла и не работало.
Я ищу решение, которое не использует никаких инструментов GNU и работало бы в базовой установке OpenBSD (при необходимости perl
является частью базовой OpenBSD, поэтому оно также доступно).