Проблема звездочки со сценарием оболочки

Хорошо у меня есть эта проблема. Проблема состоит в том, когда я использую звездочку (*) в качестве paramenter для сравнения ее с regex выражением на если оператор. regex выражения хорошо работают, пока звездочка не используется. Вы знаете, это расширяется через файловую систему, когда используется в качестве параметра, я попробовал команду shopt -s nullglob но, кажется, не работает. вот содержание моего сценария

#!/bin/bash
#an array of regex expresion to match basic crontab time values
declare -a regex_array=('^(\*|([0-9]|[0-5][0-9]))$'
                        '^(\*|([0-9]|[0-1][0-9]|2[0-3]))$'
                        '^(\*|([1-9]|0[1-9]|[1-2][0-9]|3[0-1]))$'
                        '^(\*|([1-9]|0[1-9]|1[0-2]))$'
                        '^(\*|[0-6])$')
#another array for output errors
declare -a value_cront=('minutes'
                        'hours'
                        'days'
                        'month'
                        'day of the mont')
#initializing the counter
count_i=0
#a loop that will exit until a false condition (exit codes)
while :
do
  #this loop will check the 5 time parameters with a regex expresion
  for count_param in "$@"
  do
    if [[ "$count_param" =~ ${regex_array["$count_i"]} ]]; then
      exit 0
    else
      echo "The parameter ${value_cront["$count_i"]} does not match"
      exit 1
    fi
    ((count_i++))
  done
done
1
задан 7 March 2020 в 08:36

1 ответ

#!/bin/bash

set -o noglob
set -- $@

# Regex to match basic crontab time/date values.
a=('^(\*|([0-9]|[0-5][0-9]))$' \
   '^(\*|([0-9]|[0-1][0-9]|2[0-3]))$' \
   '^(\*|([1-9]|0[1-9]|[1-2][0-9]|3[0-1]))$' \
   '^(\*|([1-9]|0[1-9]|1[0-2]))$' '^(\*|[0-6])$')

# Time/date field names.
b=('minute' 'hour' 'day of the month' 'month' 'day of the week')

if [[ $# -ne 5 ]]; then
    echo "Invalid number of time/date fields."
    exit 1
fi

for c in $@; do
    if [[ ! $c =~ ${a[$d]} ]]; then
        echo "The time/date field '${b[$d]}' does not match."
        exit 1
    fi
    ((d++))
done

echo "Cron ok!"
1
ответ дан 17 March 2020 в 00:06

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

Похожие вопросы: