我有一个大学课程要完成,我有点困在这一部分:
del - 此脚本应将调用的文件移动到垃圾箱目录,以便稍后可以将文件恢复到其原始位置。
我已经尝试过如下所示,但它不起作用:
#!/bin/bash
echo "Do you want to delete this file?"
echo "Y/N"
read ans
case "$ans" in
Y) echo "`readlink -f $1`" >>/TAM/store & mv $1 /~/dustbin ;;
N) echo "File not deleted" ;;
esac
当我运行它时,我得到了这个:
./Del: line 8: /TAM/store: No such file or directory
MV: missign destination file operand after '/~/dustbin'
另外如何使用用户输入输入文件名?或者你不能那样做。
P.S。 ~
是根目录,TAM
是我的目录,store
是文件,dustbin
是dustbin
中的root
目录。 Del
是脚本的名称
答案 0 :(得分:1)
既然你说它的课程有用,我不会给你一个完整的解决方案,而是一个非常简单(简化)的开始:
#!/bin/sh
if [ $# -eq 0 ]; then
printf "You didn't give an argument, please input file name: \n"
filename=READ_FILE_NAME_HERE
elif [$# -eq 1 ]; then
filename=$1
else
printf "Error: You gave to many parameters!\n"
exit 1
fi
# Does the file exist (and is a regular file)?
[ -f "$filename" ] || {
printf "Error: File doesn't exist or isn't a regular file.\n"
exit 2
}
Do_you_really_want_to_delete_the_file?
Do_the_remove_magic
这应该让你开始“接受参数输入,或者如果没有,允许用户输入文件名”-problem。
如果您通过检查,您知道文件名包含有效的文件名,因此您可以删除readlink
调用,(但它不会为您提供完整路径),但您可以使用printf "$filename" >>DEST
等。
bash
手册中有很多好的信息需要阅读。 (尝试:man bash
)