tl; dr: Go в конец
Звучит так, как будто вы хотите написать bash функцию для l oop поверх аргументов и записать вывод в .gitignore. Здесь есть три понятия, через которые можно go пройти: l oop итерация, расширение переменной и перенаправление stdout.
Во-первых, вам нужно тело функции, которое создается с помощью funcname() { ...; }
(;
необязательно, если вы разбиваете конечную скобку на собственную строку).
Во-вторых, вам нужно перебирать параметры, переданные этой функции. $@
- это специальная переменная в bash, которая устанавливается для всех несмещенных параметров в данном скрипте / функции. Чтобы l oop сверх этого, вы можете использовать конструкцию для l oop: for i in "${@}"
. Фигурные скобки вокруг @
являются необязательными, но кавычки обязательны, так как вы не хотите расширять funcname "a" "b c"
, чтобы оценить до трех l oop итераций. Чтобы узнать больше, посмотрите разделение IFS.
В-третьих, вы хотите расширить свою новую переменную i
в середине URL-адреса. Убедитесь, что это двойные кавычки:
for i in "${@}"; do
curl "https://raw.githubusercontent.com/github/gitignore/master/${i}.gitignore"
done
Наконец, вы хотите записать все это в файл .gitignore
. Может показаться интуитивно понятным просто добавить >.gitignore
в конце команды curl, но на самом деле вы хотите поставить его после done
. Это связано с тем, что будет выполняться такой вызов, как funcname Python macOS
:
curl "https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore" >.gitignore
curl "https://raw.githubusercontent.com/github/gitignore/master/macOS.gitignore" >.gitignore
Оператор перенаправления >
перезапишет gitignore с содержимым python, а затем перезапишет его снова с содержимым macOS. Вы действительно хотите захватить стандартный вывод обеих команд и перезаписать .gitignore их содержимым (в качестве альтернативы вы можете сделать это с помощью >>
, но многократный запуск вашей команды приведет к дублированию строк в вашем .gitignore).
Итак, ваша последняя функция будет:
gitignore() {
for i in "${@}"; do
curl "https://raw.githubusercontent.com/github/gitignore/master/${i}.gitignore"
done >.gitignore
}