Comments 6
Подключение как внешней библиотеки делая в начале скрипта source "$DEBUGGER_PATH"
поддерживается?
@kt97679 Решил я потестить этот дебаггер на простом скриптике, что живет обычно в /etc/NetworkManager/dispatcher.d и отрабатывает при подъеме интерфейса vpn0 прописывая кастомные маршруты, и наткнулся на странный баг. Вот файлик:
#!/bin/sh
[ "$1" = "vpn0" -a "$2" = "vpn-up" ] || exit 0
for server in de.archive.ubuntu.com us.archive.ubuntu.com; do
echo "Server: $server"
for hostip in `host $server|grep 'has address'|cut -d' ' -f4`; do
echo " /sbin/route add $hostip dev \"$1\""
/sbin/route add $hostip dev "$1"
done
done
Запускаем дебаггер:
user@localhost:~$ bdb.sh /tmp/99-test vpn0 vpn-up
bdb>
Устанавливаем останов после каждой строчки и начинаем жать Enter шагая по скрипту:
bdb> ba true
bdb>
+(/tmp/99-test:3): [ "$1" = "vpn0" -a "$2" = "vpn-up" ]
bdb>
+(/tmp/99-test:5): for server in de.archive.ubuntu.com us.archive.ubuntu.com
bdb>
+(/tmp/99-test:6): echo "Server: $server"
bdb>
Server: de.archive.ubuntu.com
bdb>
bdb>
bdb>
+(/tmp/99-test:7): for hostip in `host $server|grep 'has address'|cut -d' ' -f4`
bdb>
Странно. После строчки выводящей Server: de.archive.ubuntu.com
пришлось пару лишних раз нажать Enter - просто выводилась пустая подсказка. Ну да ладно, шагаем дальше.
bdb>
+(/tmp/99-test:8): echo " /sbin/route add $hostip dev \"$1\""
bdb>
/sbin/route add +(/tmp/99-test:7): dev "vpn0"
+(/tmp/99-test:9): /sbin/route add $hostip dev "$1"
bdb>
Стоп! Эээ... что это вывела команда echo
вместо переменной $hostip
??? Давайте-ка проверим, что там в $hostip
bdb> echo $hostip
+(/tmp/99-test:7):
bdb>
Так и есть, там хрень какая-то похожая на служебную строчку дебаггера с именем скрипта и номером строки. Может наш конвеер host|grep|cut криво работает под дебаггером?
bdb> host $server|grep 'has address'|cut -d' ' -f4
141.30.62.24
141.30.62.25
141.30.62.22
141.30.62.23
141.30.62.26
bdb>
Нет, отлично работает. Но вот в переменной цикла for $hostip
какая-то фигня вместо IP-адресов.
Bash отладчик с поддержкой произвольных точек останова