Мог кто-то объяснять как dig
и +short
работа в рамках этого сценария и почему они используются? Также мог кто-то объяснять, как замена команды работает в рамках кода, поскольку я изо всех сил пытаюсь понять, как замена команды работает.
#!/bin/bash
echo "Enter web address : "
read address
echo "Entered web address : $address"
nslookup "$address"
ping -c 4 $(dig +short "$address" | head -1)
Enter web address :
gutenberg.org
Entered web address : gutenberg.org
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: gutenberg.org
Address: 152.19.134.47
PING 152.19.134.47 (152.19.134.47) 56(84) bytes of data.
64 bytes from 152.19.134.47: icmp_seq=1 ttl=47 time=118 ms
64 bytes from 152.19.134.47: icmp_seq=2 ttl=47 time=165 ms
64 bytes from 152.19.134.47: icmp_seq=3 ttl=47 time=116 ms
64 bytes from 152.19.134.47: icmp_seq=4 ttl=47 time=111 ms
--- 152.19.134.47 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 111.326/127.824/165.079/21.675 ms
enter code here
enter code here
Таким образом, мы проводим эту строку из сценария:
ping -c 4 $(dig +short "$address" | head -1)
Оболочка будет разбивать его для пробела, заменять переменной и затем видеть, что это должно выполнить команду в $()
сначала. Таким образом, это должно выполнить это сначала:
dig +short "$address" | head -1
Двойные кавычки вокруг $address
не строго необходимы, но они - хорошая привычка войти в случае, если Ваши данные заканчиваются с пробелами в ней, оболочка не разделит ее для Вас.
Таким образом, если я делаю это с $address="yahoo.com"
....
$ dig +short yahoo.com | head -1
72.30.35.10
С 72.30.35.10
как вывод конвейера в замене команды строка от вершины становится
ping -c 4 72.30.35.10
который проверяет с помощью ping-запросов IP только 4 раза прежде, чем выйти, поскольку Вы испытали при попытке его. Иначе ping
работал бы, пока Вы не поражаете ctrl-c.
ping -c 4
: 4 шага
head -1 :
шоу только первая строка вывода
выройте шоу +short только "A" Запись
mirek@Mirek-nuc:~$ dig yahoo.com +short
72.30.35.9
98.137.246.7
72.30.35.10
98.138.219.231
98.138.219.232
98.137.246.8