2016-03-15 38 views
0

我写了一个函数,询问用户路径并验证它;随后显示用户输入路径的驱动器的特定分区的HDD使用情况/可用空间。我不知道为什么我收到错误使用用户的路径输入检查HDD分区空间

代码 -

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 
     } 

错误 -

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

你做了什么错误? – Raju

+0

@Raju在主体中添加了错误 – PythonCobra

回答

0

您使用两个不同的变量:$path$Path,但$path是不确定的。

替换:

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) 

有:

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) 
+0

我不确定为什么我不能使用〜作为路径 – PythonCobra

+0

'〜'在脚本中被视为字符串。这里有一个warkaround:http://stackoverflow.com/questions/3963716/how-to-manually-expand-a-special-variable-ex-tilde-in-bash – SLePort