Linux Shell脚本被困

时间:2012-11-17 14:27:07

标签: linux shell

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

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是文件,dustbindustbin中的root目录。 Del是脚本的名称

1 个答案:

答案 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