bc выдаст 1 если условие истинно
проверка должна быть
if [ $( bc <<< "test" ) == 1 ]
чтением страницы руководства о [[
указывает, что это будет проверять длину строки, это может быть не то, что вам нужно.
Вы можете использовать следующую команду sed для этой задачи
sed '/-----END CERTIFICATE-----/q' /etc/nginx/cert.pem
q
— это код выхода, который указывает sed выйти. Поэтому sed будет печатать с начала файла и завершит работу, когда встретится шаблон «-----END CERTIFICATE -----». Это приводит к остановке в конце первого сертификата.
Также нет необходимости использовать канал для перенаправления вывода cat на sed. Просто укажите имя файла в команде sed.
Источник-http://www.theunixschool.com/2011/09/sed-selective-printing.html
Вы почти достигли цели:
sed -ne '
/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p # got the range, ok
/-END CERTIFICATE-/q # bailing out soon as the cert end seen
' /etc/nginx/cert.pem
Но обратите внимание, что строки маркеров начала и конца сертификата также являются частью вывода.