2

私はUnixを初めて使用し、指定されたディレクトリ内のファイルのロードを解凍する簡単なスクリプトを練習しています. 解凍が完了したら、圧縮ファイルを別のフォルダーに移動するプログラムが必要です (このフォルダーを古い圧縮フォルダーと呼びます)。簡単にするために、ファイルを解凍するコードの一部を削除し、現在、*tar.7z ファイル拡張子ではなく、特定のファイルに対してプログラムが動作するようにしています。何らかの理由で、mv ステートメントが機能していません。スクリプトを実行しようとすると、Unix は次のように言っています。誰か私に手を貸してくれませんか?繰り返しますが、これが長い道のりであることはわかっていますが、スクリプトを書く練習をしたいと思っています。私はUnixに非常に慣れていないので、親切にしてください:(

unzip5: 14 行目: [ASDE0002.tar.7z]: コマンドが見つかりません

#!~/bin/bash
# My program to try to unzip several files with ending of tar.7z
# I have inserted the ability to enter the directory where you want this to be done

echo "What file location is required for unzipping?"

read dirloc

cd $dirloc
mkdir oldzippedfiles
for directory in $dirloc
        do
                if
                [ASDE0002.tar.7z]
                then
                mv -f ASDE0002.tar.7z $dirloc/oldzippedfiles
        fi
        done

echo "unzipping of file is complete"

exit 0
4

1 に答える 1

4

[引数を受け入れる(場合によっては組み込みの)コマンドの名前です。そのため、他のプログラムを呼び出すときと同じように、その後にスペースを入れる必要があります。また、テストが必要です。たとえば、ファイルが存在し、ファイルであるかどうかを判断するには、次を使用する必要があります-f

if [ -f ASDE0002.tar.7z ]
then
    mv -f ASDE0002.tar.7z $dirloc/oldzippedfiles
fi

他のいくつかの可能なテストがあります。

于 2013-01-10T16:38:31.687 に答える