shell脚本变量加双引号报错,不加没有问题!!奇怪

因为工作需要,要写一个自动部署的脚本
初学者,第一次写一个脚本

遇到一个想不通的问题

backupDir="~/backup"
deployDir="~/uci-data"
baseName="uci-data"
suffix=date +%Y%m%d

cp -r ${deployDir} -T ${backupDir}/${baseName}${suffix}
报错的问题是 cp cannot stat....
找不到文件夹,将deployDir="~/uci-data"去掉双引号,
改为deployDir=~/uci-data
报错 cp找不到目标文件将backupDir="~/backup"去掉双引号,
改为backupDir=~/backup

就没有问题了

但在脚本的其他地方,我也大量用了变量作为路径,有双引号,都不会有问题,
很奇怪,百思不得其解,shell的变量有无双引号,意义不是一样的吗?

求大神指导

http://www.linuxidc.com/Linux/2015-02/113500.htm