Como faço para criar um loop a partir de uma lista que resulte de um comando anterior?

0

Eu gostaria de criar um script que listasse todos os proprietários de todos os subdiretórios e, em seguida, verifique cada ID se eu tiver acesso ao sesu para os IDs.

**$**ls -lrth /apps/wldomains | grep '^d' | awk '{ print $3 }'
userid1
userid2
userid3
userid4
.
.
.

**$**sesu - userid1
Please enter your password:
**userid1@SERVER:$**sesu - userid2
Please enter your password:
**userid2@SERVER:$**sesu - userid3
.
.
.
.
    
por user224823 07.04.2017 / 08:50

2 respostas

2

use o recurso printf do awk, depois canalize para o ksh.

ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'

deve gerar

sesu userid1
sesu userid2
sesu userid3
sesu userid4

adicione simplesmente | ksh quando OK

ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
  • também compactei grep | awk em awk
por 07.04.2017 / 09:33
1

Sem analisar ls :

find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
  • find /apps/wldomains -type d encontrará todos os diretórios em /apps/wldomains (incluindo /apps/wldomains em si).

  • stat -c %U exibirá o nome de usuário do proprietário do diretório encontrado.

  • sort -u pegará esses nomes de usuário e os classificará em uma lista de nomes de usuários distintos.

  • xargs -n 1 sesu - terá essa lista e executará sesu - para cada um deles.

No Solaris, instale o pacote GNU coreutils e use gstat no lugar de stat .

    
por 07.04.2017 / 09:44

Tags