Ответ на комментарий, оставленный в 2011 году о том, как назначить каждый аргумент переменной ...
Эта функция bash назначает каждый аргумент элементу в массиве. Затем они могут быть использованы в другом месте.
Рассматриваемая функция находит файлы определенного типа и затем извлекает их:
search "multi word search terms" txt
Соответствующие строки являются первыми 5. Мы инициализируем массив, перебираем передаваемые аргументы и присваиваем их как элементы в массиве. Затем на них ссылается функция, как требуется.
Таким образом, вы можете указать необязательный третий параметр для открытия файлов в редакторе по вашему выбору:
search "multi word search terms" txt mate
В переменной $ searchterm экранированы пробелы, поэтому grep примет ее как одну строку.
function search() {
terms=();
for i in "$@"
do
terms+=("$i")
done
file='*.'${terms[1]};
searchterm=${terms[0]// /\\ };
if [ -n "$3" ]; then
find . -type f -name $file -exec grep -irl "$searchterm" {} \; | xargs ${terms[2]};
else
find . -type f -name $file -exec grep -irl "$searchterm" {} \;;
fi
}
Надеюсь, это кому-нибудь поможет!