I tried this:
file=\"myfile\"
while read -r line
do
[[ $line = \\#* ]] && continue
\"address=\\$line\\127.0.0.1\"
done < \"$file\"
This could also be accomplished with 1 sed
command:
file="myfile"
sed -i".backup" 's/^#.*$//' $file
This will modify the file in-place (creating a backup copy first), removing all lines starting with a #
.
It's safer to use [[ "$line" = "\#*" ]]
Btw, address="\\${line}\\127.0.0.1"
UPD:
If I've understand you right you need to change every uncommented domains to address=\domain\127.0.0.1
. It could be done fast and easy with sed
, there is no need in bash-program.
$> 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
If you need to remove commented lines, sed can do it too with /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: if you want to do all that stuff inside the bash script, here is your code modification:
file="./text2"
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
echo "address=/${line}/127.0.0.1"
done < "$file"
And it's output:
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
To skip lines starting with #
:
grep -v '^#' myfile | while read -r file ; do
...
done
Modify the grep
command as needed to, for example, skip lines starting with whitespace and a #
character.
Only one working for me was:
while IFS=$'\n' read line
do
if [[ "$line" =~ \#.* ]];then
logDebug "comment line:$line"
else
logDebug "normal line:$line"
fi
done < myFile