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,而不是應用程序,因此*不是單一參數,除非它僅匹配一個(或沒有)檔案/目錄。

"$@"如果您想接受所有參數,則應該在腳本中使用雙引號。 (不要使用,$*因為它會破壞包含空格的檔名。)

相關內容