0

I wrote a function which asks user the path and validates it; followed up by subsequent display of the HDD usage/available space for that particular partition of the drive which user entered path of. I am not sure why I am getting error

Code-

funcHDD () {
        read -p "Enter Path: " Path
        if [ -d $Path ]; then
                echo "Choose option from menu - HDD details:"
                echo "1. Used"
                echo "2. Available"
                read -p "Select: " HddUseAva
                tdisk=$(df -h "${Path}" | awk '{print $2}' | tail -1)
                udisk=$(df -h "${path}" | awk '{print $3}' | tail -1)
                adisk=$(df -h "${path}" | awk '{print $4}' | tail -1)
                fsys=$(df -h "${path}" | awk '{print $1}' | tail -1)
                if [ $HddUseAva = 1 ]; then
                        echo "Current used space in $fsys: $udisk  (Total: $tdisk)"
                elif [ $HddUseAva = 2 ]; then
                        echo "Current available space in $fsys: $adisk  (Total: $tdisk)"
                elif echo $HddUseAva | grep -iq 'Done'; then
                        exit
                elif echo $HddUseAva | grep -iq 'Exit'; then
                        exit
                else
                        funcHDD
                fi
        else
                echo "Invalid Path"
                funcHDD
        fi
        }

Error-

Enter Path: /home 
Choose option from menu - HDD details:
1. Used
2. Available
Select: 1
df: ‘’: No such file or directory
df: ‘’: No such file or directory
df: ‘’: No such file or directory
Current used space in :   (Total: 20G)

1 Answers1

0

You use two different variables : $path and $Path, but $path is undefined.

Replace :

udisk=$(df -h "${path}" | awk '{print $3}' | tail -1)
adisk=$(df -h "${path}" | awk '{print $4}' | tail -1)
fsys=$(df -h "${path}" | awk '{print $1}' | tail -1)

with :

udisk=$(df -h "${Path}" | awk '{print $3}' | tail -1)
adisk=$(df -h "${Path}" | awk '{print $4}' | tail -1)
fsys=$(df -h "${Path}" | awk '{print $1}' | tail -1)
SLePort
  • 15,211
  • 3
  • 34
  • 44
  • I am not sure why I am not able to use ~ as a path – PythonCobra Mar 15 '16 at 14:58
  • `~` is treated as a literal string in scripts. A warkaround here : http://stackoverflow.com/questions/3963716/how-to-manually-expand-a-special-variable-ex-tilde-in-bash – SLePort Mar 15 '16 at 15:15