Безопаснее использовать [[ "$line" = "\#*" ]]
Кстати, address="\\${line}\\127.0.0.1"
UPD :
Если я вас правильно понял, вам нужноизменить каждый незакомментированный домен на address=\domain\127.0.0.1
.Это можно сделать быстро и просто с помощью sed
, в bash-программе нет необходимости.
$> cat ./text
domain1.com
domain2.com
domain3.com
#domain4.com
domain5.com
$> sed -r -e 's/(^[^#]*$)/address=\/\1\/127.0.0.1/g' ./text2
address=/domain1.com/127.0.0.1
address=/domain2.com/127.0.0.1
address=/domain3.com/127.0.0.1
#domain4.com
address=/domain5.com/127.0.0.1
Если вам нужно удалить закомментированные строки, sed может сделать это тоже с помощью /matched_line/d
$> sed -r -e 's/(^[^#]*$)/address=\/\1\/127.0.0.1/g; /^#.*$/d' ./text2
address=/domain1.com/127.0.0.1
address=/domain2.com/127.0.0.1
address=/domain3.com/127.0.0.1
address=/domain5.com/127.0.0.1
UPD2 : если вы хотите сделать все это внутри скрипта bash, вот ваша модификация кода:
file="./text2"
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
echo "address=/${line}/127.0.0.1"
done < "$file"
И вывод:
address=/domain1.com/127.0.0.1
address=/domain2.com/127.0.0.1
address=/domain3.com/127.0.0.1
address=/domain5.com/127.0.0.1