У меня есть сценарий оболочки, который принимает параметры, ниже приведен код ..
В настоящее время он будет принимать параметры только в случае его передачи, если он вызывается следующим образом: script.sh --mode = load (или -m= load)
Есть ли способ изменить это так, чтобы его можно было вызывать со знаком или без знака "=", чтобы я мог вызвать: script.sh --mode load (или -m load)
В идеале нужно работать в чистом bash, поскольку у меня нет доступа для установки дополнительных инструментов и т. Д.
for i in "$@"
do
case $i in
-m=*|--mode=*)
MODE="${i#*=}"
if [[ $MODE =~ ^(dump|load)$ ]]; then
echo "" > /dev/null
else
bark "Invalid --mode set, set this to dump or load.";
exit 1
fi
;;
-p=*|--db-path=*)
DBPATH="${i#*=}"
;;
-d=*|--dump-dir=*)
DUMPDIR="${i#*=}"
;;
-l=*|--list-file=*)
TABLES="${i#*=}"
# check if file exists on disk
if [ -e $TABLES ]
then
echo "" >> /dev/null
else
bark "Table file not found!";
exit 1
fi
;;
-t=*|--tenant-name=*)
TENANT="${i#*=}"
# check if tenant is correct
if [[ $TENANT =~ ^($TENANT_LIST)$ ]]; then
echo "" >> /dev/null
else
bark "Tenant name does not match, aborting.";
exit 1
fi
;;
-s|--shared)
SHARED=YES
;;
*) usage # unknown option
;;
esac
done
Моя версия bash:
bash --version
GNU bash, версия 4.3.22 (1) -релиз (powerpc-ibm-aix5.1.0.0)