![Wie erstelle ich eine Schleife aus einer Liste, die aus einem vorherigen Befehl resultiert?](https://rvso.com/image/109214/Wie%20erstelle%20ich%20eine%20Schleife%20aus%20einer%20Liste%2C%20die%20aus%20einem%20vorherigen%20Befehl%20resultiert%3F.png)
Ich möchte ein Skript erstellen, das alle Besitzer aller Unterverzeichnisse auflistet und dann jede ID überprüft, wenn ich über Sesu auf die IDs zugreifen kann.
**$**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
.
.
.
.
Antwort1
Verwenden Sie die Printf-Funktion von awk und leiten Sie sie dann an ksh weiter.
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'
sollte erzeugen
sesu userid1
sesu userid2
sesu userid3
sesu userid4
einfach hinzufügen | ksh
, wenn OK
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
- Ich habe auch verdichtet
grep | awk
inawk
Antwort2
find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
find /apps/wldomains -type d
findet alle Verzeichnisse darunter/apps/wldomains
(einschließlich/apps/wldomains
sich selbst).stat -c %U
gibt den Benutzernamen des Besitzers des gefundenen Verzeichnisses aus.sort -u
nimmt diese Benutzernamen und sortiert sie in eine Liste mit unterschiedlichen Benutzernamen.xargs -n 1 sesu -
nimmt diese Liste und führt siesesu -
für jeden von ihnen aus.
Installieren Sie unter Solaris das GNU-Coreutils-Paket und verwenden Sie gstat
anstelle von stat
.