シェルで複数のオプションを処理する。
| 登録日 | :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}