После объединения двух файлов оболочки bash в один он не работает

Когда я выполняю их последовательно, это работает. После их объединения возникает ошибка.

Первый файл (a.sh).

# !/bin/bash

/etc/init.d/xl2tpd start | xargs echo
echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control

Второй файл (b.sh).

#!/bin/bash

sleep 3

VPN_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $VPN_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

После echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control был выполнен, интерфейс ppp0 не появится сразу. Вот я и пишу это sleep 3 в файле b.sh.

Если я объединю их в одну (c.sh).

#!/bin/bash

/etc/init.d/xl2tpd start
echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control 

sleep 3

VPN_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $VPN_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

Появляется ошибка: SIOCADDRT: Нет такого устройства.

Нет ppp0, когда я набрал ifconfig, Итак, когда выполнить route add default ppp0, это не удастся, и это причина. Но я не знаю, почему это произошло.

Кто-то помогает мне. Благодарю.

1 ответ

Изменяющего sleep 3 в sleep 10опять работает. Эта ошибка вызвана задержкой сети.

Другие вопросы по тегам