我想取得使用者作為參數給出的目錄的大小。例子:
read -p "Enter the directory" target
du -k $target
如果使用者給出路徑為~/Documents/dir
,我收到錯誤訊息:du: cannot access '~/Documents/dir': No such file or directory
而如果我給的命令是:
du -k ~/Documents/dir
我得到了想要的輸出。
為什麼我無法將變數與 du 指令一起使用?
答案1
~
透過 shell 讀入後,或將其放入命令中時,不會展開du
。您可以使用以下程式碼強制 bash 進行擴充:
read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"
這${target/#\~/$HOME}
是重要的部分。它替換~
為環境變數的內容HOME
。