While trying to add more separators here:
...
# Separators: space, slash, tab.
grep_separator=" |/| "
sed_separator=" \|/\|\t"
...
I mistakingly used "|" instead of "\|" in sed_separator.
Factor out new variables grep_or and sed_or, and construct the grep_separator
and sed_separator variables by joining the elements of a list using grep_or
and sed_or.
Verified with shellcheck, and tested by rerunning on x86_64-linux.
Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
dictionary=$cache_dir/$cache_file
# Separators: space, slash, tab.
-grep_separator=" |/| "
-sed_separator=" \|/\|\t"
+declare -a grep_separators
+grep_separators=(
+ " "
+ "/"
+ " "
+)
+declare -a sed_separators
+sed_separators=(
+ " "
+ "/"
+ "\t"
+)
+
+join ()
+{
+ local or
+ or="$1"
+ shift
+
+ local res
+ res=""
+
+ local first
+ first=true
+
+ for item in "$@"; do
+ if $first; then
+ first=false
+ res="$item"
+ else
+ res="$res$or$item"
+ fi
+ done
+
+ echo "$res"
+}
+
+grep_or="|"
+sed_or="\|"
+grep_separator=$(join $grep_or "${grep_separators[@]}")
+sed_separator=$(join $sed_or "${sed_separators[@]}")
usage ()
{