Die Shell führt beim Erweitern von Parametern einen einzigen Durchlauf durch, wird also $user
erweitert, der vorherige ~
wird jedoch nicht erweitert. Um die Eingabezeile zu reparieren, verwenden Sie eval
:
... eval sudo du -sh ~$user ...
Wenn ich tippe, sudo du -sh ~student1
bekomme ich die erwartete Ausgabe (siehe Screenshot). Wenn ich jedoch versuche, das folgende Skript zu verwenden:
#!/bin/bash for user in "$@"; do sudo du -sh ~$user done
Um das Gleiche zu tun, erhalte ich die Fehlermeldung, dass das Verzeichnis nicht existiert. Hier ist ein Screenshot.
(Ich weiß, dass ich das kann sudo du -sh student1 student2...
, und dass das bash-Skript unbrauchbar ist, aber ich verstehe immer noch nicht, warum es nicht funktioniert.)
Ich habe mir die Gesamtdatenträgerverwendung für einen bestimmten Benutzer angesehen, aber es war nicht genau das, wonach ich suchte.
Die Shell führt beim Erweitern von Parametern einen einzigen Durchlauf durch, wird also $user
erweitert, der vorherige ~
wird jedoch nicht erweitert. Um die Eingabezeile zu reparieren, verwenden Sie eval
:
... eval sudo du -sh ~$user ...