Именно это и делает MASQUERADE
: он заменяет исходный адрес источника адресом интерфейса, через который пакет собирается выйти. Если вы хотите сохранить оригинальный адрес, не используйте маскарадинг.
Думаю, без временного файла не обойтись. zsh
имеет встроенную поддержку для этого с помощью =(...)
формы подстановки команд.
Здесь, по буквам -проверьте содержимое переменной (выводаprintf %s $string
):
{
(){
aspell check -x $1 >&3 3>&-
cat $1
} =(printf %s $string) | IFS= read -rd '' corrected_string
} 3>&1
Вот решение, которое у меня сработало:
TMP_FILE=`mktemp`
echo "${USER_INPUT}" > "${TMP_FILE}"
# Allows me to read user input below, assigns stdin to keyboard
exec < /dev/tty
# I'm assuming you have a aspell (spell checker) installed on your system
# invoke aspell and check for typos
/usr/bin/aspell check "${TMP_FILE}"
ANSWER=$(cat $TMP_FILE )
if [[ "${ANSWER}" != "${USER_INPUT}" ]]; then
echo "After applying fixes: ${ANSWER}"
fi
Наслаждайтесь!
Я написал сценарий оболочки из 1 -строк, который я назвал dict:
#!/bin/sh
echo $* | aspell pipe
dict charitible @(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7-20110707)
& charitible 8 0: charitable, charitably, heritable, veritable, writable, credible, shareable, irritable