Как определить, являются ли компоненты массива, где номера и буквы Коммунируемый успех друг друга на основе чисел?

Вы можете создать псевдоним или функцию в файле .bashrc - например:

alias lcd="cd $( ls -1 | tail -1 )"

OR

lcd() { cd $( ls -1 | tail -1 ) ; }
0
27.12.2018, 15:30
2 ответа

Вы можете использовать ответы на недавние вопросы, например

$ ARR=(h4 q2 s7 r1 h3)
$ SA=( $(IFS=$'\n'; echo "${ARR[*]}" | sort -k1.2n) )
$ [ "${ARR[*]}" == "${SA[*]}" ] && echo in seq || echo out of seq
out of seq

Числовая цифра nsortпозволяет использовать многозначные числа, начиная со второго символа.

РЕДАКТИРОВАТЬ:или, еще короче,

( IFS=$'\n'; [ "${ARR[*]}" == "$(sort -k1.2n <<< "${ARR[*]}" )"  ] )  && echo in seq || echo out of seq
1
28.01.2020, 02:30

Приведенный ниже код инициализирует «последнюю» переменную, затем перебирает массив (, начиная со второго элемента ), и проверяет, меньше ли этот элемент, чем предыдущий; если это так, код отображает сообщение об ошибке и останавливает цикл.

lastone=${array[0]:1}
for((i=1; i < ${#array[@]}; i++))
do
  if (( "${array[i]:1}" < "$lastone" ))
  then
    echo failure
    break
  fi
  lastone=${array[i]:1}
done

В качестве альтернативы, попросите bash напечатать каждый элемент в отдельной строке, удаляя первый/начальный символ, затем передать это в sortи спросить, отсортирован ли ввод:

if printf '%d\n' "${array[@]/#?/}" | sort -cn 2>/dev/null
then
  echo is sorted
else
  echo is not sorted
fi
1
28.01.2020, 02:30

Теги

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