求助帖--shell脚本

题目:

编写脚本,实现文件分类的功能。

编写脚本的过程中,要特别注意路径问题

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个"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值