Skip to content

Instantly share code, notes, and snippets.

@naogify
Created January 29, 2025 04:51
Show Gist options
  • Select an option

  • Save naogify/dc6f8e4064ed18e4a7d77b19ea5a6574 to your computer and use it in GitHub Desktop.

Select an option

Save naogify/dc6f8e4064ed18e4a7d77b19ea5a6574 to your computer and use it in GitHub Desktop.
#!/bin/bash
# --------------------------------------------------
# run_wgrib2.sh
#
# このスクリプトは、指定された GRIB2 ファイルを
# Docker コンテナ内で wgrib2 を使用して処理します。
#
# 使用方法:
# ./run_wgrib2.sh /path/to/your/file.bin
#
# 引数:
# /path/to/your/file.bin - 処理したい GRIB2 ファイルのパス
#
# 依存関係:
# - Docker がインストールされていること
# - realpath コマンドが利用可能であること
#
# --------------------------------------------------
# エラーハンドリング: 任意のコマンドが失敗した場合にスクリプトを終了
set -e
# 関数: エラーメッセージを表示して終了
function error_exit {
echo "Error: $1" >&2
exit 1
}
# 引数の数をチェック
if [ "$#" -ne 1 ]; then
echo "Usage: $0 /path/to/your/file.bin"
exit 1
fi
# 引数からファイルパスを取得
FILE_PATH="$1"
# ファイルの存在を確認
if [ ! -f "$FILE_PATH" ]; then
error_exit "File '$FILE_PATH' does not exist."
fi
# realpath コマンドを使用して絶対パスを取得
# realpath が利用できない場合は、readlink -f を使用
if command -v realpath >/dev/null 2>&1; then
ABS_PATH=$(realpath "$FILE_PATH")
elif command -v readlink >/dev/null 2>&1; then
ABS_PATH=$(readlink -f "$FILE_PATH")
else
error_exit "Neither 'realpath' nor 'readlink' commands are available."
fi
# ファイルのディレクトリとファイル名を取得
DIR_PATH=$(dirname "$ABS_PATH")
FILE_NAME=$(basename "$ABS_PATH")
# Docker イメージ名
IMAGE_NAME="geolonia/wgrib2:1.3"
# Docker イメージが存在するか確認
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
error_exit "Docker image '$IMAGE_NAME' not found. Please pull or build the image first."
fi
# Docker コマンドを実行
docker run --rm -v "$DIR_PATH":/data "$IMAGE_NAME" /data/"$FILE_NAME"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment