Уровень NOOB: ужасен в синтаксисе, регулярных выражениях и программировании на BASH в целом, но учусь и учусь на Lin +
Я бы хотел запустить этот скрипт, но ему явно не нравится мой синтаксис.
Просто чтобы проверить, правильно ли создается переменная, я повторяю вывод, но позже переменная будет изменена, чтобы определить, какой статический IP-файл нужно объединить в / etc / network / interfaces и какой список IP-адресов сетевых хостов. для сканирования с помощью NMAP, получения журналов и т. д.
вот сценарий:
#!/bin/bash
# Script to grab the System IP and Gateway Addresses and use them to
# determine which other scripts to run my network scans with
ip=$(ip a | grep 'global[ \t]' | awk '{print $2}')
gateway=$('route -n | grep 'UG[ \t]' | awk '{print $2}')
echo $ip
echo $gateway
done
Вот результат:
./test: 11: ./test: Syntax error: Unterminated quoted string
Когда я помещаю "" вместо () следующим образом:
ip=$"ip a | grep 'global[ \t]' | awk '{print $2}'"
gateway=$"'route -n | grep 'UG[ \t]' | awk '{print $2}'"
Вот результат :
$ip a | grep 'global[ ]' | awk '{print }'
$'route -n | grep 'UG[ ]' | awk '{print }'
Если я удалю $, результат будет таким же. Он просто печатает команду с апострофом и не выводит результат указанной команды.
Что я делаю не так?
У вас, кажется, нет ненужного символа '
перед командой маршрута. Это приводит к неопределенному сообщению об ошибке в кавычках, так как у вас нечетное количество апострофов.
Измените
gateway=$('route -n | grep 'UG[ \t]' | awk '{print $2}')
на
gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}')
Подсветка синтаксиса, предоставляемая форматированием кода в Stack Exchange, на самом деле помогает заметить это. Строки в кавычках показаны красным, а без кавычек - черными.