0

仮想マシンを介して Linux を使用していますが、

私のコースワークでは、3 つのスクリプトを作成する必要があります。そのうちの 1 つは、削除されたファイルをユーザーが配置した場所または元の場所に復元することです。

ここに私がこれまでにスクリプトのために持っているものがあります

#!/bin/sh
if [ "$1" == "-n" ]
then
  cd /root/michael/trash
  restore`grep "$2" cd /root/michael/store`
  filename=`basename "$restore"`
  echo "Where would you like to save the file?"
  read location
  location1=`readlink -f "$location"`
  mv -i $filename "location1"/filename
else
  cd /root/michael/trash
  restore=`grep "$2" cd /root/michael/store`
  filename=`basename "$restore"`
  mv -i $filename "location1" $location
fi

しかし、ファイルを復元しようとすると、次のエラーが表示されます

grep: cd: no such file or directory
mv: cannot move `test' to `': no such file or directory

restore -n を実行すると sricpt が機能するようになりましたが、resotre を実行するとまだ機能しません

スクリプトを更新すると、次のようになります。

#!/bin/sh
if [ "$1" == "-n" ]
then
  cd /root/michael/trash
  restore`grep "$2" /root/michael/store`
  filename=`basename "$restore"`
  echo "Where would you like to save the file?"
  read location
  location1=`readlink -f "$location"`
  mv -i $filename "location1"/filename
else
  cd /root/michael/trash
  restore=`grep "$2" /root/michael/store`
  filename=`basename "$restore"`
  mv -i $filename "location1" $location
fi

今、私はエラーを取得しています: mv: 復元 test.txt を実行しようとすると、`' の後に宛先ファイルのオペランドがありません

4

2 に答える 2

2

クリーンアップされた構文は次のとおりです。

#!/bin/sh
if [ "$1" == "-n" ]
then
  cd /root/michael/trash
  restore `grep "$2" /root/michael/store`
  filename=`basename "$restore"`
  echo "Where would you like to save the file?"
  read location
  location1=`readlink -f "$location"`
  mv -i $filename "$location1"/$filename
else
  cd /root/michael/trash
  restore=`grep "$2" /root/michael/store`
  filename=`basename "$restore"`
  mv -i $filename "$location1" $location
fi

残念ながら、あなたの目標がelse条項にあるものを推測することはできません。たとえば: mv -i $filename "$location1" $location: ここで使用する前にどちらもlocation定義location1されていません。

于 2012-11-28T21:59:15.327 に答える
1

grep には、パターンとファイルの 2 つの引数が必要です。パターン、コマンドcd、ファイルの 3 つを指定しました。cdここでは必要ありません。

于 2012-11-28T22:03:49.657 に答える