0

我有一个大学课程要完成,我有点卡在这部分:

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'

另外如何使用用户输入来输入文件名?或者你不能那样做吗?

PS~是根目录,TAM是我的目录,是store文件,dustbin是. 是脚本的名称dustbinrootDel

4

1 回答 1

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

这应该让您开始解决“要么接受参数输入,要么如果没有,允许用户输入文件名”的问题。

如果你通过了检查,你知道文件名包含一个有效的文件名,所以你可以删除readlink调用,(虽然它不会给你完整的路径),但你可以使用printf "$filename" >>DESTetc.

手册中有很多很好的信息可供阅读bash。(试试man bash:)

于 2012-11-17T14:46:32.160 回答