题目:
编写脚本,实现文件分类的功能。
编写脚本的过程中,要特别注意路径问题
1.判断用户的家目录($HOME)下是否存在 file_dir 这个目录文件
如果存在,则询问用户是否清空,如果用户输入的是Y,则清空该目录文件
如果用户输入的不是 Y 则不清空,退出脚本(exit)
如果不存在,则新建该目录文件
2.判断用户的家目录($HOME)下是否存在 dir_dir 这个目录文件
如果存在,则询问用户是否清空,如果用户输入的是Y,则清空该目录文件
如果用户输入的不是 Y 则不清空,退出脚本(exit)
如果不存在,则新建该目录文件
3.输入一个指定的路径 (最好是绝对路径)
将该路径下的所有普通文件都拷贝到 file_dir 中
将该路径下的所有目录文件都拷贝到 dir_dir 中
并分别统计操作了多少个目录文件 和 多少个普通文件
我的问题:为什么我执行这个脚本之后,明明家目录里面没有file_dir和dir_dir文件,if [ -e $fire_dir ]还会判断为真???
#!/bin/bash
cd $HOME
if [ -e $file_dir ] #判断文件是否为存在 存在真 不存在假
#不应该直接$file_dir
#应该用一个变量接住file_dir
#下面dir_dir同理
then
read -p "是否清空该目录 >> " V1
case $V1 in
[Yy])
rm -rf file_dir
mkdir file_dir
;;
*)
exit
;;
esac
else
echo 2
mkdir file_dir
fi
if [ -e $dir_dir ]
then
read -p "是否清空该目录 >> " V2
case $V2 in
[Yy])
rm -rf dir_dir
mkdir dir_dir
;;
*)
exit;;
esac
else
mkdir dir_dir
fi
read -p "请输入一个路径(最好是绝对路径)" V3
i=0 #普通文件个数
j=0 #目录文件个数
for V4 in $(ls $V3)
do
if [ -f $V3/$V4 ]
then
cp -r $V3/$V4 $HOME/file_dir
((i++))
elif [ -d $V3/$V4 ]
then
cp -r $V3/$V4 $HOME/dir_dir
((j++))
fi
done
echo "普通文件有$i个"
echo "目录文件有$j个"
正确答案:
#!/bin/bash
cd $HOME
FILE=file_dir
DIR=dir_dir
if [ -e $FILE ] #判断文件是否为存在 存在真 不存在假
then
read -p "是否清空该目录 >> " V1
case $V1 in
[Yy])
rm -rf file_dir
mkdir file_dir
;;
*)
exit
;;
esac
else
mkdir file_dir
fi
if [ -e $DIR ]
then
read -p "是否清空该目录 >> " V2
case $V2 in
[Yy])
rm -rf dir_dir
mkdir dir_dir
;;
*)
exit;;
esac
else
mkdir dir_dir
fi
read -p "请输入一个路径(最好是绝对路径)" V3
i=0 #普通文件个数
j=0 #目录文件个数
for V4 in $(ls $V3)
do
if [ -f $V3/$V4 ]
then
cp -r $V3/$V4 $HOME/file_dir
((i++))
elif [ -d $V3/$V4 ]
then
cp -r $V3/$V4 $HOME/dir_dir
((j++))
fi
done
echo "普通文件有$i个"
echo "目录文件有$j个"