Перейти к главному содержимому

bash и аргументы командной строки

Пример разбора нескольких опций командной строки

VERBOSE=
NINGEN_OPTS=

function usage {
        echo "Usage: $(basename $0) [-hwv] [-n ningen_opts]" 2>&1
        echo '   -h   shows usage'
        echo '   -v   set verbose mode ON'
        echo '   -w   build for windows (using mingw on linux)'
        echo '   -n   options passed to ningen'
        exit 1
}

while getopts ":hvwn:" opt; do
  case ${opt} in
    #-----------------------------
    h ) usage ;;
    v ) VERBOSE="-v" ;;
    w ) BUILD_FOR_WINDOWS=1 ;;
    n ) NINGEN_OPTS=$OPTARG ;;
    #-----------------------------
    \? )
      echo "Invalid Option: -$OPTARG" 1>&2
      exit 1
      ;;
    :)                                    # If expected argument omitted:
      echo "Error: -${OPTARG} requires an argument."
      exit 1                              # Exit abnormally.
      ;;
    *)                                    # If unknown (any other) option:
      usage                               # Exit abnormally.
      ;;
  esac
done
shift $((OPTIND -1))

# берем первый аргумент из списка - директория на сервере куда копировать
#TARGET_DIR="$1"
#shift

echo "Main script running"

Отказ запуска без аргументов

Для того, чтобы обработать случай отсутствия аргументов, после usage добавить:

if [[ ${#} -eq 0 ]]; then
   usage
fi