Linuxシェルスクリプトのハング状況の削除

Linuxシェルスクリプトのハング状況の削除

このスクリプトはごみ箱ディレクトリの内容を削除する必要があります。このオプションを使用すると、-aスクリプトを削除する必要があります。みんなごみ箱のファイル。それ以外の場合、スクリプトはごみ箱にあるファイル名を1つずつ表示し、ユーザーに削除するかどうかを確認するように求める必要があります。

if test ! -f ~/TAM/dustbin/*
then
  echo "this directory is empty"
else
  for resfile in ~/TAM/dustbin/* 
  do
    if test -f $resfile ; then
      echo "Do you want to delete $resfile"
      echo "Y/N"
      read ans
      if test $ans = Y ; then 
        rm $resfile
        echo "File $resfile was deleted"
      fi
    fi
  done
fi

上記はうまくいきますが、いくつかのエラーが報告されます。でも競合なしでエラーが発生した後も、次のコード行を実行します。

間違い:

./remove: line 4: test: to many arguments

(ごみ箱に複数のファイルがある場合に発生します。)

./remove: line 4: test: root/TAM/dustbin/NewFile2: binary operator expected

(これは、ファイルがnewfile3ではなくnewfile2の場合に発生します。)

-a各ファイルを個別に要求せずにフォルダ内のすべてのアイテムを削除する方法についてのアイデアを持っている人はいますか?

ベストアンサー1

最初の質問は基本的にあまりにも多くのパラメータを提供しました。test(私のビューには、貼り付けた最初の行が実際にはスクリプトの4行目のようです。)ケースに複数のファイルがある場合は待つ必要がありますtest -f file1 file2 file3…test二項演算子(たとえば、「-a」はANDを意味します)、-f file1その後の次の式などです。

確認を要求せずにファイルを自動的に削除するためにスクリプトに引数を指定して処理する場合は、test$ 1(スクリプトの最初のコマンドライン引数になる)で同じ引数を使用できます。

おすすめ記事