2017-02-13 11 views
0

複数のディレクトリにファイルを圧縮したいと思います。何らかの理由で、最初のディレクトリ(/ Sanbox/logs1)のみを圧縮し、他のディレクトリ( "/ Sanbox/logs2" "/ Sanbox/logs3" "/ Sanbox/logs4")は圧縮しません。どんな助けもありがとう。ここに私のコード:複数のディレクトリでファイルを圧縮

#!/bin/bash 

LOG_FILES=("/Sanbox/logs1" "/Sanbox/logs2" "/Sanbox/logs3" "/Sanbox/logs4") 

for file in ${LOG_FILES[file]}/* ; do 
    gzip "${file}" 
done 

答えて

1

私はあなたのスクリプトで変更することをお勧めします。 まず、forループでarrayをどのように使用しているかを説明します。 インデックス番号は、全体の配列がforループで使用されるべきであることを告げると、「@」や「*」を使用して

for file in ${LOG_FILES[@]}; do 
    # code that creates archives 
done 

を使用して繰り返すようにしてください。

第2の方法は、アーカイブの作成に使用されるディレクトリパスの作成方法です。 for-doの行ではなく、forループ本体の中に "/ *"を追加してみてください。

このようなものは、このトリックを行う必要があります。

LOG_FILES=("/Sanbox/logs1" "/Sanbox/logs2" "/Sanbox/logs3" "/Sanbox/logs4") 

for file in ${LOG_FILES[@]}; do 
    gzip "${file}"/*; 
done 

バッシュでarrayisの使用についての詳細情報については、次のことが確認できBash Begginers Guide: Array variables

関連する問題