0

私の授業では、疑似ゴミ箱フォルダからファイルを「復元」するための Linux スクリプトを作成します。私はこれを行いましたが、うまくいくように見えますが、うまくいきません。代わりに、次のようなエラーが表示されます。

sed: -e 式 #1、文字 2: コマンドの後の余分な文字

しかし、コードのどこにも -e 式を使用していないため、理由がわかりません。しかし、あまりにも長い間コードを見つめていたせいで、私の脳は焼き尽くされているので、私には見えないばかげた間違いにすぎないのかもしれません。どんな助けでも大歓迎です!

これが私のコードです:

#!/bin/sh

if [ "$1" = "-n" ]
then

##if command is used with -n, prompts user to enter a new location for the file

  cd ~/my-documents/mydir01/trashbin
  restore=`sed "$2" ~/my-documents/mydir01/locations`
  name=`basename "$restore"`

  echo $name
  echo "Enter new location for this file."
  read loc
  echo $loc
  mv -i `"$name" "$newloc"/"$name"`

else

##file will be restored to its previous location

  cd ~/my-documents/mydir01/trashbin
  restore=`sed "$1" ~/my-documents/mydir01/locations`
  loc=`dirname "$restore"`
  echo $loc
  name=`dirname "$restore"`
  mv $1 $name
fi
4

1 に答える 1

1

シェルスクリプトをどの程度正確に呼び出していますか?$1と$2の値はsedによって使用されており、問題が発生している場所である可能性があります。

元の投稿者からのコメントに基づくと、目的の最終目標は、元のファイルの場所を〜/ my-documents / mydir01 / locationに保存し、後でファイルを復元する必要があるときにそこから取得することであると思われます。

これを行う1つの方法は、タプル(キーと値のペアなど)を使用してこの情報を格納および取得することです。たとえば、元のファイル名がXで、新しいファイル名がYの場合、変更時に「XY」をロケーションファイルに追加します。後でファイルを復元するときは、X(またはおそらくY)を使用してロケーションファイルからこの行を選択し(ヒント:grepを使用)、次にawkまたはperlを使用します(例:awk'{print $ 1} ')行の最初の部分を選択します。Xはファイルの元の名前であるため、これを行うと、必要なXが得られます。

要約すると、この質問は実際にはsedに関するものではありません。

幸運を。

于 2012-11-28T17:30:23.843 に答える