Оболочка выполняет один раз для расширения параметров, поэтому $user
расширяется, но предыдущий ~
не расширяется. Для повторной обработки строки ввода используйте eval
:
... eval sudo du -sh ~$user ...
Когда я печатаю, sudo du -sh ~student1
я получаю ожидаемый результат (см. Скриншот). Однако, когда я пытаюсь использовать скрипт ниже:
#!/bin/bash for user in "$@"; do sudo du -sh ~$user done
чтобы сделать то же самое, я получаю сообщение об ошибке, что каталог не существует. Вот скриншот.
(Я знаю, что могу сделать sudo du -sh student1 student2...
, и что сценарий bash бесполезен, но я все еще не понимаю, почему он не работает.)
Я посмотрел на общее использование диска для конкретного пользователя, но это было не совсем то, что я искал.
Оболочка выполняет один раз для расширения параметров, поэтому $user
расширяется, но предыдущий ~
не расширяется. Для повторной обработки строки ввода используйте eval
:
... eval sudo du -sh ~$user ...