No Solaris 11.3, você desejará usar nawk
em vez de awk
. nawk
("new awk
") é instalado por padrão e deve estar no seu caminho ( /usr/bin/nawk
).
A função system()
em awk
(qualquer implementação) não retorna a saída do comando, mas seu código de saída. Está tudo bem, você provavelmente não quer a saída real de pkg
de qualquer maneira. O comando pkg
sairá com um código de saída diferente de zero se algo der errado (consulte o manual pkg
).
O pipeline a seguir pegará a saída pkg list
e ignorará a primeira linha (que é um cabeçalho) e todas as linhas correspondentes aos nomes dos pacotes excluídos. Para as linhas restantes de entrada, ele executará pkg verify
a system()
com o nome do pacote.
Se pkg verify
retornar um status de saída diferente de zero, ele incrementará um contador. No final do processamento, o contador será exibido, mostrando quantos erros de verificação ocorreram.
pkg list | nawk 'NR > 1 && !/exclude1|exclude2/ { if (system("pkg verify " $1)) { e++ } } END { printf("%d errors\n", e) }'
Isso é bastante ineficiente. É mais rápido obter uma lista dos pacotes e verificá-los de uma só vez:
pkg list | nawk 'NR > 1 && !/exclude1|exclude2/ { print $1 }' | ( xargs pkg verify ) || echo "there were errors"
Se você tem uma lista de pacotes para ignorar em um arquivo:
pkg list | /usr/xpg4/bin/grep -F -v -f excluded.txt | nawk 'NR > 1 { print }' | ( xargs pkg verify ) || echo "there were errors"