Заставить Bash использовать 8 цветов

for i in "${array[@]}" перебирает значения ассоциативного массива. Если вы хотите перебрать клавиши, это for in "${!array[@]}"в bash. Так:

#! /bin/bash -
T=${1?Please pass a decimal integer number as argument}
nums=(2 7 11 15)
ret=1

if [[ ! $T =~ ^-?[0-9]+$ ]]; then
  printf >&2 '"%s" is not a valid integer number\n' "$T"
  exit 2
fi

for i in "${!nums[@]}"; do
  for j in "${!nums[@]}"; do
    if ((nums[i] + nums[j] == T)); then
      printf '%s\n' "i=$i nums[i]=${nums[i]}" "j=$j nums[j]=${nums[j]}"
      ret=0
      break 2
    fi
  done
done
exit "$ret"

Обратите внимание, что важно проверять входное число, переданное в качестве аргумента, поскольку в противном случае код может привести к уязвимости выполнения произвольной команды.

Также обратите внимание, что bashпонимает числа с ведущими нулями как восьмеричные числа, поэтому 010 будет пониматься как 8, а не 10.

0
04.11.2019, 06:04
1 ответ

Проблема была связана с тем, что я часто использовал standend ()для возврата функций рисования обратно к белому на черном тексте. По какой-то причине это не делало того, что я ожидал от некоторых дистрибутивов. Явным образом сообщив attron ()пару цветов, которая была явно определена как черный и белый, я решил проблему. Это хакерское и жестко закодированное -решение, возникшее из-за того, что я злоупотреблял библиотекой ncurses в жестко -закодированном виде.

0
28.01.2020, 03:09

Теги

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