
午前1時に実行され、次のyyyy / mm / dd形式で昨日と今日のindex.htmlを生成するクローンタスクがあります。
-1日をつかんでユーザーに送信する必要があります。どうすればいいですか?
-bash-4.2$ find /var/lib/pgsql/scripts/outfile/ -type f -name index.html
/var/lib/pgsql/scripts/outfile/2022/06/29/index.html
/var/lib/pgsql/scripts/outfile/2022/06/30/index.html
この場合、
/var/lib/pgsql/scripts/outfile/2022/06/29/index.html
Bashスクリプトを使用してこれをどのように実行できますか?
答え1
明らかに一連の式が必要ですyesterday
(2022/06/30
あなたの例では今日の仮定)。
date
これは(GNU)またはbash(+ 4.2)自体によって生成できますdate -d yesterday +%Y/%m/%d
。
$ printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))"
2022/06/29
1日が実際に86400秒で、DSTがそれを妨げないとします。
これにより、次のファイルの完全なディレクトリが表示されます。
dir='/var/lib/pgsql/scripts/outfile/'
name='index.html'
yest="$(printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))")"
file="$dir$yest/$name"
[[ -e "$file" ]] || exit 3
echo "$file"
cronが使用されることに注意してくださいsh
(ではありませんbash
)。上記のスクリプトを使用するbash
か、ファイルに作成されたスクリプトをbash /path/to/scriptfile
cronから呼び出す必要がありますsh
。