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/*