Скрипт, запущенный под Jenkins, не работает из-за неправильного -распознания токенов

Вы уверены, что blktraceзаписал ввод-вывод только для раздела /dev/sda6, а не полностью записал ввод-вывод для всего раздела /dev/sda? Я вижу https://www.spinics.net/lists/linux-btrace/msg00417.html, но я не уверен, применялось ли это когда-либо к основному ядру...

1
09.09.2021, 12:25
1 ответ

Проблема в том, как вы используете EOT. При использовании слова без кавычек в качестве разделителя heredoc содержимое heredoc будет расширено оболочкой перед записью. Как поясняется в руководстве bash:

If any part of word is quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \newline is ignored, and ‘\’ must be used to quote the characters ‘\’, ‘$’, and ‘`’.

В результате `in`в вашем heredoc читается оболочкой как подстановка команды, поэтому она пытается запустить команду inи вернуть результат.

На практике это означает, что вам нужно процитироватьEOT:

cat << 'EOT' >> app/src/main/java/in/myproj/utils/Constants.kt

Обратите внимание, что это означает, что любые переменные, которые могут быть в вашем здесь документе, также не будут расширены, но, поскольку я не вижу их в вашем вопросе, я предполагаю, что это не проблема.

0
09.09.2021, 21:16

Теги

Похожие вопросы