Если вы просто назначите Mail Reader
для поиска переменной, как показано ниже
search=Mail Reader
bash
будет жаловаться, что команда Reader
не найдена, так как после того, как этот первый пустой символ принимает что-либопоследующая команда.Что вам нужно, это
search="Mail Reader" # 'Mail Reader' would also do.
В случае подстановки вашей команды все не отличается, вам нужны обертки с двойными кавычками, поскольку сама подстановка не будет происходить внутри одинарных кавычек
search="$(command)"
В вашем случае вы сделали перебор, используя подстановку команд.Это можно было бы упростить до:
search="Name=${appsx[$index]}"
# Then do the grep.
# Note that cat-grep combo could be simplified to
# -h suppresses printing filenames to get same result as cat .. | grep
grep -ih "$search" /usr/share/applications/*.desktop