Я использую следующий скрипт для проверки орфографии и для обхода неудобного вывода aspell -a
/ ispell
.В то же время сценарий также решает проблему, заключающуюся в том, что ординалы, такие как 2nd
, не распознаются Aspell, просто игнорируя все сообщения Aspell, которые не являются его собственным словом.
#!/bin/bash
set +o pipefail
if [ -t 1 ] ; then
color="--color=always"
fi
! for file in "$@" ; do
<"$file" aspell pipe list -p ./dict --mode=html |
grep '[[:alpha:]]\+ [0-9]\+ [0-9]\+' -oh |
grep '[[:alpha:]]\+' -o |
while read word ; do
grep $color -n "\<$word\>" "$file"
done
done | grep .
Выдаже получить цветной вывод, если stdout
скрипта является терминалом, и вы получаете статус выхода 1
в случае, если скрипт обнаружил орфографические ошибки, в противном случае статус выхода скрипта 0
.
Кроме того, скрипт защищает себя от pipefail
, который является довольно популярной опцией для установки, например, в Makefile
, но не работает для этого скрипта.И последнее, но не менее важное: этот скрипт явно использует [[:alpha:]]
вместо [a-zA-Z]
, что не так сложно, когда он также соответствует не-ASCII символам, таким как немецкий äöüÄÖÜß
и другие.[a-zA-Z]
тоже так, но на каком-то уровне это неожиданно.