Компиляторы по умолчанию gcc
дистрибутива Debian реализуют c++14
. Если у вас дистрибутив RedHat, попробуйте использовать devtoolset-6-gcc
илиdevtoolset-6-gcc-c++
Я исправил ваш скрипт, добавив короткие опции в getopt
, обратите внимание, что :
после каждого opt
означает, что для этой опции требуется аргумент:
#!/bin/bash
log_type='unset'
state='unset'
date='unset'
help='unset'
mode="$1"
usage()
{
echo "Usage: LogRotator [ -t | --log_type - Allowed values: [access error] ]
[ -s | --state - Allowed values: [archive or backup] ]
[ -d | --date 1-10-2020]
[ -h | --help]
Modes:
1) list - list the files
2) restore - restore the files"
exit 2
}
ARGUMENT_LIST=(
"log-type"
"state"
"date"
)
# read arguments
opts=$(getopt \
-o t:s:d:h \
--longoptions "$(printf "%s:," "${ARGUMENT_LIST[@]}")",help \
--name "$(basename "$0")" \
-- "$@"
)
VALID_ARGUMENTS=$?
if [ "$VALID_ARGUMENTS" != "0" ]; then
usage
fi
eval set -- $opts
while [[ $# -gt 0 ]]; do
case "$1" in
-t | --log-type)
log_type=$2
shift 2
;;
-s | --state)
state=$2
shift 2
;;
-d | --date)
date=$2
shift 2
;;
-h | --help)
help=1
shift
;;
*)
break
;;
esac
done
if [[ "$help" == 1 ]]
then
usage
fi