Устранение глюка с find
Оказалось, в моей функции create_list() копия был обнаружен малозаметный и посему дико поганый баг. А баг был с командой
find
. Например, если запустить ее в любом каталоге с параметрамиfind /home/smallwolfie/openvpn/configs -maxdepth 1 -iname *.ovpn
, то она найдет все файлы *.ovpn
Но вот если команду запустить в каталоге с файлами (
/home/smallwolfie/openvpn/configs
), то она упадет:cd /home/smallwolfie/openvpn/configs
find /home/smallwolfie/openvpn/configs -maxdepth 1 -iname *.ovpn
Вывод:
find: paths must precede expression: riseup-nl.ovpn
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Заключить маску файла в кавычки:
find /home/smallwolfie/openvpn/configs -maxdepth 1 -iname "*.ovpn"
Вывод:
/home/smallwolfie/openvpn/configs/vpnboo k-pl226-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-de4-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-us1-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-us2-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-ca222-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-ca198-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-fr1-tcp80.ovpn
/home/smallwolfie/openvpn/configs/riseup-c a.ovpn
/home/smallwolfie/openvpn/configs/riseup-n l.ovpn
/home/smallwolfie/openvpn/configs/riseup-u s.ovpn
/home/smallwolfie/openvpn/configs/vpnboo k-fr8-tcp80.ovpn
Пример из файла скрипта для соединения с определенным VPN-сервером
create_list() #$1 - dir, $2 - file mask
{
FOUNDLST=""
echo "Find in $1"
for FLE in $(find $1 -maxdepth 1 -iname "$2"|sort); do
if [ -n "$FLE" ]; then
FOUNDLST="$FOUNDLST"`basename $FLE`"\n"
fi
done
}
На GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/09/17/ustr