bash入門:シェルの実行結果を保存する

スポンサーリンク
bash入門:シェルの実行結果を保存する ノウハウ
bash入門:シェルの実行結果を保存する
この記事は約4分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、シェルの実行結果を保存する方法についてご紹介します。

スポンサーリンク

背景

シェルの実行結果を保存する機会があったので、そのときの内容を備忘として残しました。

この記事のソースは下記のサイトにアップしています。

実行環境について

実行環境は下記の記事を参考にお願いします。

作成ファイル一覧

下記のファイルを作成しました。

        new file:   local/work/01_gen_out_dir/01_gen_out_dir.sh

01_gen_out_dir.sh

#!/bin/bash

run_time=$(TZ=JST-9 date "+%Y%m%d_%H%M%S")

yyyy=${run_time:0:4}
mm=${run_time:4:2}
dd=${run_time:6:2}
HH=${run_time:9:2}
MM=${run_time:11:2}
SS=${run_time:13:2}

run_name=$(basename "$0")
run_name=${run_name%.*}

out_dir=${run_name}/${yyyy}/${mm}/${dd}/${HH}/${MM}/${SS}
echo "out : ${out_dir}"

mkdir -p "${out_dir}"

log=${out_dir}/out.log

echo "test" | tee -a "${log}"

動作確認

下記のコマンドを実行します。

make build

make up

make login

cd 01_gen_out_dir

bash 01_gen_out_dir.sh

下記の結果が出力されていれば成功です。

root@583e0ff56c7f:/work/01_gen_out_dir# bash 01_gen_out_dir.sh
out : 01_gen_out_dir/2023/12/03/18/34/18
test

解説

01_gen_out_dir.sh

このBashスクリプトは、以下の機能を持っています:

  1. run_time変数の設定: TZ=JST-9 date "+%Y%m%d_%H%M%S" を実行して、日本標準時(JST)での現在の日時を “YYYYMMDD_HHMMSS” の形式で取得し、run_time変数に格納しています。
  2. 日時の要素を分割: run_timeから年、月、日、時、分、秒をそれぞれ yyyymmddHHMMSSの変数に抽出しています。これにより、各要素を個別の変数に格納しています。
  3. run_name変数の設定: basename "$0" を使って、スクリプトファイルの名前を取得し、拡張子を取り除いて run_name変数に格納しています。
  4. 出力ディレクトリの作成: 各時間要素を含む階層構造のディレクトリパス out_dir を作成し、mkdir -p "${out_dir}"を使ってディレクトリを作成しています。これにより、スクリプトを実行した時点の日時に基づいたディレクトリが作成されます。
  5. ログファイルのパスの設定: log変数に、out_dirに “out.log” を追加したパスを格納しています。
  6. echo "test" | tee -a "${log}": “test”という文字列を標準出力に表示し、同時に ${log} ファイルに追記します。tee -aコマンドは標準入力から読み取った内容を指定したファイルに追記します。この場合、"${log}"に “test”が追記されます。

最終的に、スクリプトはディレクトリの作成やログの書き込みなどを行い、結果として out.log ファイルが ${out_dir} ディレクトリに作成されます。ディレクトリ構造は日時に基づいています。

おわりに

今日は、シェルの実行結果を保存する方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました