![Como faço para criar um loop a partir de uma lista resultante de um comando anterior?](https://rvso.com/image/109214/Como%20fa%C3%A7o%20para%20criar%20um%20loop%20a%20partir%20de%20uma%20lista%20resultante%20de%20um%20comando%20anterior%3F.png)
Gostaria de criar um script que listasse todos os proprietários de todos os subdiretórios e depois verificasse cada ID se eu tivesse acesso ao sesu aos 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
.
.
.
.
Responder1
use o recurso printf do awk e, em seguida, 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
basta adicionar | ksh
quando estiver OK
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
- Eu também compactei
grep | awk
emawk
Responder2
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
ele mesmo).stat -c %U
gerará 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 -
pegará esta lista e executarásesu -
para cada um deles.
No Solaris, instale o pacote GNU coreutils e use gstat
no lugar do stat
.