0

私は大学のコースワークを完了する必要があり、この部分に固執しています。

del-このスクリプトは、必要に応じて後でファイルを元の場所に復元できるように、呼び出されたファイルをdustbinディレクトリに移動する必要があります。

以下に示すように試行しましたが、機能していません。

#!/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はのdustbinディレクトリrootです。Delスクリプトの名前です

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

これで、「パラメータ入力を取得するか、入力しない場合はユーザーにファイル名の入力を許可する」という問題に取り掛かることができます。

チェックを通過すると、filenameに有効なファイル名が含まれていることがわかります。そのため、readlink呼び出しを削除できます(ただし、フルパスは提供されません)が、printf "$filename" >>DESTetcを使用できます。

のマニュアルには、読むべき良い情報がたくさんありますbash。(試してみてくださいman bash:)

于 2012-11-17T14:46:32.160 に答える