macOSディレクトリのファイルが占めるスペース全体を返すBashスクリプト

macOSディレクトリのファイルが占めるスペース全体を返すBashスクリプト

macOSディレクトリのファイルが占めるスペース全体を返すbashスクリプトを作成しようとしています ~/Pictures/Photos\ Library.photoslibrary/Masters/

#!/bin/bash
# AUTHOR:SWASTI BHUSHAN DEB

    # Platfrom:macOS
    # macOS High Sierra 10.13.
    #Checks the total space occupied by files within a directory


    read -e -p "Enter the full path to the Home Directory : userpath
    var=$(sudo du -ach $userpath/Photos\ Library.photoslibrary/Masters/|tail -1|awk '{print $1}')
    echo "$var"
    exit

端末で単独で使用すると、次のコマンドが目的の結果を提供します。

`du -ach ~/Pictures/Photos\ Library.photoslibrary/Masters/|tail -1|awk '{print $1}'
25G

ただし、上記のスクリプトに$ userpathと入力すると、スクリプトにエラーが発生します。

 du: /Volumes/Macintosh: No such file or directory
du: HD/Users/swastibhushandeb/Pictures/Photos Library.photoslibrary/Masters/: No such file or directory
0B

これが何の問題なのかよくわかりません。すべてのコメント/提案/サンプルスクリプトコードを歓迎

答え1

変数を使用するときは、変数を引用する必要があります。そうしないと、スペースやその他の特殊文字を含むパスは機能しません。

read -e -p "Enter the full path to the Home Directory :" userpath
var=$(sudo du -ach "$userpath/Photos Library.photoslibrary/Masters/" |tail -1|awk '{print $1}')
echo "$var"
exit

PS:ほとんどの出力を捨てる場合は、duこのオプションは必要ありません-a

関連情報