Ограничение Bash Аргументы?

Вот мой bash-скрипт, очень простой, без мяса на данный момент:

#!/bin/bash

NO_ARGUMENTS=0
ARG_ERROR=10

if [ $# -eq "$NO_ARGUMENTS" ]
then
  echo "Usage: `basename $0` options (-h -C -m)"
  exit $ARG_ERROR
fi

helpscreen()
{
echo
echo "========================"
echo "Help Screen:"
echo "Available Arguments:"
echo "-h - Displays this screen"
echo "-C - Complete Install"
echo "-m - Minimal Install"
echo "========================="
echo 
}

completeinstall()
{
echo "Complete Install Initiating"
}

minimalinstall()
{
echo "Minimal Install Initiating"
}

while getopts ":hCm" Option
do
  case $Option in
    h) helpscreen;;
    C) completeinstall;;
    m) minimalinstall;;
    *) echo "Option Not Available.";;
  esac
done

exit

Как вы можете видеть, он просто запускает опции, когда выбран./test.sh -h, -C или -m. Моя проблема в том, что пользователь может выбрать -Cm и запустить его как при полной, так и при минимальной установке. Как я могу отредактировать это, чтобы остановить такое событие или ограничить варианты.

1 ответ

Решение

Не зацикливайтесь, так как вам важен только один вариант.

getopts ":hCm" Option
case $Option in
  h) helpscreen;;
  C) completeinstall;;
  m) minimalinstall;;
  *) echo "Option Not Available.";;
esac

Или добавить break в каждом случае.

while getopts ":hCm" Option
do
  case $Option in
    h) helpscreen;      break;;
    C) completeinstall; break;;
    m) minimalinstall;  break;;
    *) echo "Option Not Available.";;
  esac
done

exit
Другие вопросы по тегам