KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

シェルで複数のオプションを処理する。

登録日 :2024/09/27 05:06
カテゴリ :Linux

bashで複数のオプションを処理する。(検討中)

#!/bin/bash

SCRIPT_DIR='/home/app/asyncio_server/client'
SCRIPT_NAME='client.py'
DEFAULT_NUM=20
DEBUG=false

function echo_usage() {
    echo "Usage  : $0 -n <length number> -j <Job ID>"
    echo "Example: $0 -n 5 -j 12345"
}

function echo_message(){
    echo "------------------------------------------------------------------"
    echo "The default log displayed is the latest ${DEFAULT_NUM} lines. "
    echo "If you want to change this, please provide a number as an argument."
    echo_usage
    echo "------------------------------------------------------------------"
}

is_number() {
    local re='^[0-9]+$'
    if [[ $1 =~ $re ]]; then
        return 0  # 数値である
    else
        return 1  # 数値でない
    fi
}


NUM=${DEFAULT_NUM}
JOB_ID=0

while getopts ":n:j:" opt; do
  case $opt in
    n)
      NUM="$OPTARG"
      ;;
    j)
      JOB_ID="$OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

#echo "NUM:  $NUM"
#echo "Job ID: $JOB_ID"


if is_number $NUM; then
    #echo "$NUM は数値です"
    echo "Length:  $NUM"
else
    echo "[ERROR]: Length = $NUM"
    echo "[ERROR]: '-n' argument  must be a number."
    echo_usage
    exit 1
fi

if is_number $JOB_ID; then
    #echo "$NUM は数値です"
    echo "Job ID:  $JOB_ID"
else
    echo "[ERROR]: Job ID = $JOB_ID"
    echo "[ERROR]: '-j' argument  must be a number."
    echo_usage
    exit 1
fi


SCRIPT='python3 '${SCRIPT_DIR}'/'${SCRIPT_NAME}' -u '${USER}' -n '${NUM}

if $DEBUG;
then
  echo ${SCRIPT}
fi

eval ${SCRIPT}