shell函数中的linux du命令只产生一行输出

shell函数中的linux du命令只产生一行输出

我一直在使用du命令来显示文件使用情况:

$ sudo du -hsx /* | sort -rh | head -n 40
16G     /home
5.3G    /var
2.6G    /usr
840M    /run
...

我想编写一个函数来使我免于重复性工作:

show_disk() {
    sudo du -hsx "$1" | sort -rh | head -n 40
}

但是当我运行这个函数时,du只得到一行输出,如下所示:

$ show_disk() /*
0   /bin

在我看来,du命令在 shell 函数中的行为有所不同,我哪里出了问题?任何帮助,将不胜感激。

答案1

$1是第一个参数。请记住,扩展通配符的是 shell,而不是应用程序,因此*不是单个参数,除非它仅匹配一个(或没有)文件/目录。

"$@"如果您想接受所有参数,则应该在脚本中使用双引号。 (不要使用,$*因为它会破坏包含空格的文件名。)

相关内容