добавьте агент makepkg dlagent, который принимает ненулевой код выхода

#archlinux #pkgbuild

#archlinux ( архлинукс ) #pkgbuild построить

Вопрос:

Для некоторых загрузок lgogdownloader всегда возвращает код выхода 141 после успешной загрузки. Из-за этого dlagent должен перехватить этот код выхода.

Я уже пробовал некоторые dlagents, но ни один из них не работает:

 DLAGENTS =('gogdownloader::/usr/bin/lgogdownloader --download-file=%u -o %o || /usr/bin/test $? -eq 141')

Error: unrecognised option '-eq'
 
 DLAGENTS =('gogdownloader::/usr/bin/bash -c "lgogdownloader --download-file=%u -o %o || test $? -eq 141"')

--download-file=gogdownloader://2146639313/en3installer0: -c: line 0: unexpected EOF while looking for matching `"'
--download-file=gogdownloader://2146639313/en3installer0: -c: line 1: syntax error: unexpected end of file

 

Ответ №1:

Ваша проблема в том, что вы неправильно экранируете " внутри ' строки. Это воспроизводит ваше 2-е сообщение об ошибке:

 $ eval '/usr/bin/bash -c "echo hello world"'
hello: -c: line 0: unexpected EOF while looking for matching `"'
hello: -c: line 1: syntax error: unexpected end of file
 

1-е вхождение " обрабатывается как эта буквальная последовательность, в то время как 2-е вхождение экранирует цитату, оставляя вас с бесконечной строкой. Удалив escape, вы получите желаемый результат:

 $ eval '/usr/bin/bash -c "echo hello world"'
hello world
 

Комментарии:

1. Если я использую DLAGENTS =('gogdownloader::/usr/bin/bash -c "lgogdownloader --download-file=%u -o %o || test $? -eq 141"') , я получаю ту же ошибку: --download-file=gogdownloader://2146639313/en3installer0: -c: line 0: unexpected EOF while looking for matching `"' --download-file=gogdownloader://2146639313/en3installer0: -c: line 1: syntax error: unexpected end of file

2. @Lukas1818 вы пытались поместить содержимое в отдельный скрипт и вызвать этот скрипт из makepkg вместо встраивания команды?

Ответ №2:

Как упоминает msrd0, вы можете использовать отдельный скрипт:

 DLAGENTS =("gogdownloader::./catch_gogdownloader_error141.sh %u %o")
 
 #!/bin/bash
lgogdownloader --download-file=$1 -o $2 || test $? -eq 141

 

Но я думаю, что это скорее обходной путь, чем реальное решение.