|
|
|
@ -149,9 +149,18 @@ _find_zone() {
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
_debug "Looking for zone \"${_attempted_zone}\""
|
|
|
|
|
_line_num=$(echo "$_zone_names" | _find_linenum "$_attempted_zone")
|
|
|
|
|
if [ -n "$_line_num" ]; then
|
|
|
|
|
_zone_id=$(echo "$_zone_ids" | sed "${_line_num}q;d")
|
|
|
|
|
|
|
|
|
|
# Take care of "." and only match whole lines. Note that grep -F
|
|
|
|
|
# cannot be used because there's no way to make it match whole
|
|
|
|
|
# lines.
|
|
|
|
|
regex="^$(echo "$_attempted_zone" | sed 's/\./\\./g')$"
|
|
|
|
|
line_num=$(echo "$_zone_names" \
|
|
|
|
|
| grep -n "$regex" \
|
|
|
|
|
| cut -d : -f 1
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if [ -n "$line_num" ]; then
|
|
|
|
|
_zone_id=$(echo "$_zone_ids" | sed "${line_num}q;d")
|
|
|
|
|
_debug "Found relevant zone \"$_attempted_zone\" with id \"$_zone_id\" - will be used for domain \"$_domain\"."
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
@ -160,30 +169,4 @@ _find_zone() {
|
|
|
|
|
_strip_counter=$(_math "$_strip_counter" + 1)
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#-- _find_linenum()-----------------------------------------------------
|
|
|
|
|
# Returns line number of line (supplied as an argument) in STDIN.
|
|
|
|
|
#
|
|
|
|
|
# Example:
|
|
|
|
|
#
|
|
|
|
|
# printf "a\nb\nc" | _find_linenum "b"
|
|
|
|
|
#
|
|
|
|
|
# This will:
|
|
|
|
|
# - print out 2 because that's the line number of "b"
|
|
|
|
|
# - return code 0 because it was found
|
|
|
|
|
|
|
|
|
|
_find_linenum() {
|
|
|
|
|
_current_line_num=0
|
|
|
|
|
while read -r line; do
|
|
|
|
|
_current_line_num=$(_math "$_current_line_num" + 1)
|
|
|
|
|
if [ "$line" = "$1" ]; then
|
|
|
|
|
# Found! Let's echo the line number and quit
|
|
|
|
|
echo "$_current_line_num"
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
# Not found
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# vim: et:ts=2:sw=2:
|
|
|
|
|