[]
имеет специальное значение для оболочки, оно просто означает «один символ, взятый из любого символа в скобках». Поэтому, когда вы запускаете
echo [H323H]
, оболочка ищет файл с именем или H, или 2, или 3 ... Если хотя бы один файл соответствует, [H323H]
заменяется всеми соответствующими именами файлов в выход; в противном случае он воспроизводится как есть.
источник: https://unix.stackexchange.com/a/259385
Использование кавычек вокруг $line
решит вашу проблему без необходимости проверять файлы, соответствующие этим символам ( что сделало бы скрипт не очень надежным)
#!/bin/bash
tempconf="/tmp/test.file"
while read -r line
do
echo "$line"
done < test.conf > "$tempconf"