Код, который я имею, просматривает последнее активное устройство, использованное в последовательности, а затем продолжает его.Если в последовательности есть пробел, который в данный момент не используется, я бы хотел его заполнить.Как я могу встроить это в код?
Сценарий работает так, как ожидается, как написано для следующего в последовательности.Я не уверен, с чего начать с добавления функции для заполнения пробелов.
Ввод:
bash script WABEL8499IPM 3
Скрипт:
SRCFILE="~/Desktop/deviceinfo.csv"
LOGDIR="~/Desktop/"
LOGFILE="$LOGDIR/DeviceNames.csv"
# base name, such as "WABEL8499IPM"
device_name=$1
# quantity, such as "2"
quantityNum=$2
# the largest in sequence, such as "WABEL8499IPM108"
max_sequence_name=$(cat $SRCFILE | grep -o -e "$device_name[0-9]*" | sort --reverse | head -n 1)
# extract the last 3digit number (such as "108") from max_sequence_name
max_sequence_num=$(echo $max_sequence_name | rev | cut -c 1-3 | rev)
# create a sequence of files starting from "WABEL8499IPM101" if there is not any "WABEL8499IPM".
if [ -z "$max_sequence_name" ]; then
max_sequence_name=device_name
max_sequence_num=100
fi
# Fill In Sequence If Any Spots are Available If 101, 102, 104,
# 105, 106, 107 and 108 are used I want to output 103 (to fill in),
# 109 and 110 (to continue sequence).
# create new sequence_name
# such as ["WABEL8499IPM109", "WABEL8499IPM110"]
array_new_sequence_name=()
for i in $(seq 1 $quantityNum); do
cnum=$((max_sequence_num + i))
array_new_sequence_name+=($(echo $device_name$cnum))
done
#CODE FOR CREATING OUTPUT FILE HERE
#for fn in ${array_new_sequence_name[@]}; do touch $fn; done;
# write log
for sqn in ${array_new_sequence_name[@]};
do
echo $sqn >> $LOGFILE
done
Фактический результат, как написано:
#OUTPUT FROM WABEL8499IPM, 3
#IF WABEL8499IPM101,102,104,105 ARE USED THEN OUTPUT IS THIS:
WABEL8499IPM106
WABEL8499IPM107
WABEL8499IPM108
Желаемый / ожидаемый результат:
#OUTPUT FROM WABEL8499IPM, 3
#IF WABEL8499IPM101,102,104,105 ARE USED THEN OUTPUT IS THIS:
WABEL8499IPM103
WABEL8499IPM106
WABEL8499IPM107
По сути, в моем текущем скрипте я делаю вызов API, чтобы посмотреть, что в настоящее время зарегистрировано в MDM, а затем смотрю настаршее число в последовательности и вывод следующего числа в последовательности.Цель состоит в том, чтобы заполнить последовательность, если есть какие-либо пробелы, где последовательность не завершена.