记一次shell变量赋值时踩得坑

今天写了个严重失误的脚本,特此记录,以示警戒
脚本里面,我写了这么一行赋值语句

1
BASEDIR="~/go/test"

随后创建目录

1
mkdir -pv $BASEDIR

脚本执行以后,发现在当前目录下建立了如下的目录


今天写了个严重失误的脚本,特此记录,以示警戒
脚本里面,我写了这么一行赋值语句

1
BASEDIR="~/go/test"

随后创建目录

1
mkdir -pv $BASEDIR

脚本执行以后,发现在当前目录下建立了如下的目录

原来是因为我脚本里面那个引号的问题,导致在创建目录的时候讲~当成一个字符串而不是解析成家目录,从而创建了一个名字为~的目录,于是,我自然就想把这个目录和下面的所有文件都删掉

1
rm -rf ~

这一失足成千古恨啊,在删除的时候就将~解析成家目录了,导致将家目录下所有文件都删除了,还好平时重要的东西都用git同步了,更庆幸的是不是用的root身份执行,否则后果不堪设想啊
如此严重的失误,特此记录,以示警戒
最后奉劝,大家在写脚本的时候都尽量用绝对路径