idn: список минимальных и максимальных ограничений для отладки

Это не совсем то, о чем вы просили, но вы можете создавать скрипты vim с вашим содержимым. Начнем с простого случая:

$ cat noendspaces
#!/usr/bin/vim -s
:%s/ *$//
:r ! echo "\#last changed by $USER in :" `date`
:x

а потом...

$ chmod 755 noendspaces
$ for a in file*.txt 
  do
   ./noendspaces $a
  done
0
28.08.2019, 21:25
1 ответ

Я не думаю, что idnимеет какие-либо переключатели для пропуска недопустимых строк вместо выхода с ошибкой, поэтому единственный оставшийся вариант — перезапустить его после ожидаемой ошибки:

idn_skip(){
    while ! error=$(idn 2>&1 >&3); do
        case $error in *'Punycode failed'*|*'Output would be too large'*) ;; # restart
        *) break;;
        esac
    done 3>&1
}

idn_skip < domain_list

Это уродливо и глупо и не будет работать при чтении списка доменов из -недоступного для поиска файла (, который можно исправить в стиле bash -, запустив его как stdbuf -i1 idn, но это будет только сделать это еще более смешным ).

Вместо того, чтобы пытаться преодолеть idnограничения, я бы посоветовал использовать Net::LibIDNпакет perl(apt-get install libnet-libidn-perlв Debian )и написать все это на Perl.

0
28.01.2020, 03:20

Теги

Похожие вопросы