このスクリプトは特定のパターンでファイル名を生成し、以前に同じパターンで作成されたファイル(存在する場合)を削除しますか?

このスクリプトは特定のパターンでファイル名を生成し、以前に同じパターンで作成されたファイル(存在する場合)を削除しますか?

YEARMONTHDAYHOURMINSECにホスト名と日付を格納するファイルを生成し、システム内のすべての環境変数を印刷し、以前に生成されたすべてのファイルをディレクトリに削除し、そうでない場合は新しいファイルを生成するスクリプトを作成したいと思います。

したがって、スクリプトはそのディレクトリを検索してそのパターンの古いファイルを削除する必要がありますが、他のファイルは削除しないでください。

#!/bin/bash

time=$(date +"%Y%m%d%H%M%S")
echo $(hostname) >>env.$time.txt
echo date:$time >>env.$time.txt
echo $(env)>>env.$time.txt
cat env.$time.txt

ベストアンサー1

既存のスクリプトに対する簡単な修正は次のとおりです。

#!/bin/bash

# set location of backup such as `/var/log`
envDir=/path/to/dir

mkdir -p $envDir/junk

mv $envDir/env.*.txt $envDir/junk 2> /dev/null

time=$(date +"%Y%m%d%H%M%S")
echo $(hostname) >> $envDir/env.$time.txt
echo date:$time >> $envDir/env.$time.txt
echo $(env)>>$envDir/env.$time.txt
cat $envDir/env.$time.txt

rm $envDir/junk/*

echo $(env)実際に利用できないデータを生成するyoursなどのいくつかの点は改善されるかもしれません。代わりにenv、行で区切ってインポートするのは簡単なので、これを行う必要があります。

ファイル名を事前定義して、設定などのコードを簡素化し、メンテナンスを容易にすることもできます。

追加の説明を含む少し改善されたバージョンは次のとおりです。

#!/bin/bash

# set location of backup such as `/var/log`
# !!! Update this!
envDir=/path/to/dir

# set backup time
time=$(date +"%Y%m%d%H%M%S")

# set full file name for the backup
envFile=$envDir/env.$time.txt

# make temporary directory and ignore if it already exists
mkdir -p $envDir/junk

# move existing environment backup files to junk until we have our new output
mv $envDir/env.*.txt $envDir/junk 2> /dev/null

hostname >> $envFile
echo date:$time >> $envFile
env >> $envFile
cat $envFile

# remove the backup(s)
rm $envDir/junk/*

おすすめ記事