O shell faz uma única passagem nos parâmetros de expansão, então $user
é expandido, mas o ~
anterior não é expandido. Para recuperar a linha de entrada, use eval
:
...
eval sudo du -sh ~$user
...
Quando digito sudo du -sh ~student1
, obtenho a saída esperada (veja a captura de tela). No entanto, quando tento usar o script abaixo:
#!/bin/bash
for user in "$@"; do
sudo du -sh ~$user
done
para fazer a mesma coisa, recebo um erro que o diretório não existe. Aqui é uma captura de tela.
(Euseiquepossofazersudodu-shstudent1student2...
,equeoscriptbashéinútil,maseuaindanãoentendoporqueissonãofunciona.)
Eudeiumaolhada