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"