Jenkinsfile является своего рода дополнением к системам контроля версий. Он работает с конвейеры и текстовые файлы.
Это хороший пример для демонстрации интерактивного и запрограммированного подходов, т. е. различий.
Процесс можно разделить на три части, как указывает OQ:
1 )открыть ФАЙЛ в интерактивном (и, следовательно, :визуальном )редакторе
2 )ДОБАВИТЬ 2 строки. Линейные шумовые линии. Добавить (или вставить )куда?
3 )Сохранить. Упомянутые дополнительные :wq
. Но мы не делаем ключевые макросы здесь.
Теперь вы переводите на автоматизированный. Во-первых, я упрощаю, документ Wurtel HERE — хорошее начало. Но является ли это законченным «решением»? я предлагаю:
Создайте файл только с этими двумя строками. Они постоянны и содержат знаки доллара. Назовите его gradle-lines
пока. В любом случае хорошая инвестиция:
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
Теперь можно
cat gradle-lines >>filename.sh
И после
alias grad-append='cat gradle-lines >>'
вы можете ввести
град -ap (TAB )имя файла (TAB)
...для запуска псевдонима с именем файла. Любое имя файла.
grad-append filename.sh
это сокращение отcat gradle-lines >> filename.sh
Больше мне показать нечего!(Так просто)
Решение с sed -i
кажется альтернативой. Обязательно, если вы планируете вставлять эти строки в специальное место. Помимо Perl и т. д., но это другой калибр и здесь он действительно не нужен.
В любом случае это два немного разных элементарных шага :добавление >>
и сглаживание.
Но Jenkinspipe и >>
двухстрочного -файла должны быть n.p. Для этого нужно больше спецификаций.
ПС:
Я проверил все это. Я имею в виду, что я тестировал гораздо больше, пока не понял, что файла с двумя строками и >>
достаточно. Грязный Q!
Я начал этот вопрос с положительной оценки ответа Вюртеля; вот его основное решение, о котором я упоминал выше,ЗДЕСЬ документ. Я должен отдать ему должное, формально. Клянусь, я пошел в обход с info sed
и tmpf=mktemp
и даже cp $(mktemp)
, но затем добавить к какому файлу? Вот Вюртель ЗДЕСЬ:
Если вы хотите добавить только эти строки, сделайте что-то вроде:
cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF
Это также будет работать, если файл еще не существует.
Если вы поместите это в сценарий или функцию, она будет называться grad-append
, как в моем решении. Но это функция (к счастью ), потому что ей нужен (к сожалению )позиционный параметр $1
. "filename.sh" теперь жестко закодирован -.
И этому документу также не хватает модульности; функция и данные смешаны. Это может быть идеальным для определенных ситуаций. Но мой вариант более гибкий и прямой.
Что, если он --только раз в то время как --хочет :read gradle-lines
войти в vim в интерактивном режиме? Мое решение имеет многоразовые модули в качестве побочного эффекта.