Не удалось найти версию из вывода

В системах Linux задайте неизменяемый атрибут файла с помощью chattr .

sudo chattr +i file

A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file, most of the file's metadata can not be modified, and the file can not be opened in write mode. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

Используйте lsattrдля отображения атрибутов файла.

lsattr -l myfile
myfile    Immutable

Недостатком этого является то, что вы не сможете писать в файл, даже будучи суперпользователем (root ). Сначала вам нужно будет удалить неизменяемый атрибут:

sudo chattr -i file

В macOS команда chflags используется для установки и сброса неизменяемого флага. Для установки:

chflags uchg file

и снять или очистить:

chflags nouchg file

Эти операции может выполнять либо владелец файла, либо суперпользователь.

В macOS при использовании флагов -Olс lsнеизменяемый флаг отображается как uchg, если он установлен.

0
23.09.2020, 12:08
1 ответ

Я бы предложил решение на основе awk-, если этот инструмент вам доступен:

awk '/^Installed Product/{f=1} f && $1=="Version" {print $2; f=0}'

установит флаг fпосле того, как будет найден заголовок «Установленный продукт», а (только )затем ищет строку, начинающуюся с «Версия». Он напечатает второе поле этой строки, разделенное пробелом -, которое является версией. В качестве меры безопасности он одновременно сбрасывает флаг, чтобы гарантировать, что последующее появление строки «Версия» не приведет к ложному выводу.

Вы можете использовать его как

sh /ihs/IBM/HTTPServer/bin/versionInfo.sh | awk '/^Installed Product/{f=1} f && $1=="Version" {print $2; f=0}'
4
18.03.2021, 23:03

Теги

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