Я не совсем понял, каким образом в баше можно нормально экранировать переменные, так чтобы ни кавычки (" и ""), ни \ | / ` ~ не обрабатывались сами башем, если они есть в переменной.
Пример:
cat text_so_spetssivolami | ( while read line; do
echo $line
if [ $line == «1» ];
then
echo YES
fi
done
Ещё пример:
~# cat /tmp/lol
;:'":'«\/.;|\/`~`@#23!$%^&*()+_}{[]{}][
~# cat /tmp/lol | ( read line; echo »${line}" )
;:'":'«/.;|/`~`@#23!$%^&*()+_}{[]{}][
Как бы я не экранировал $line, всё-равно какие-то спец-символы (в зависимости от вида экранирования) заставляют bash работать некорректно.
Особенно меня интересует, как можно писать на баше безопасно. Т.е. чтобы даже если входящем потом (тут cat) мог управлять злоумышленник, то всё-равно они никак не мог бы преодолеть экранирование.