dpkg-parsechangelog
працює, і більш рання відповідь на передачу даних через sed / grep повинна бути повністю надійною. Якщо ви хочете знати точні деталі формату dpkg-parsechangelog
виводу та більшості інших файлів управління в стилі debian, див. RFC 822 . Ніколи не нормально, щоб версія версії пакета деб містила новий рядок, пробіл або будь-які інші спеціальні або контрольні символи (див. man deb-version
), Тому Version: blah
рядок " " у висновку завжди буде присутній, і він завжди буде єдиним рядком на його власний.
Однак, dpkg-parsechangelog
це дуже важка програма, яка запускається лише для отримання поточного номера версії із журналу змін. Він повинен запустити Perl і завантажити вражаюче велику кількість бібліотек, щоб дати результат, більшість з якого ви не будете використовувати. На більш повільних платформах, або з повільним носієм зберігання файлів, або коли вам потрібно робити цю версію, розбираючи багато разів, вона виявиться досить болісно повільною. Замість цього просто використовуйте все, що є в першому наборі дужок у першому рядку:
head -1 debian/changelog | awk -F'[()]' '{print $2}'
Це дозволить отримати правильну поточну версію пакета з будь-яким дійсним changelog
файлом у стандартному форматі (а нестандартні debian/changelog
формати для всіх практичних загальних цілей ніколи не використовуються).