#!/usr/bin/env bash # hex -> 256 hex=${*:-`< /dev/null`} hex=${hex#\#} for ((i = 0; i < ${#hex}; i += 2)) { rgb+=($((16#${hex:i:2}))) } (( ${#hex} != 6 || ${#rgb[@]} != 3 )) && { printf 'usage : test [hex]\n' >&2 exit 1 } mapfile -t array << EOF 0 0 0 128 0 0 0 128 0 128 128 0 0 0 128 128 0 128 0 128 128 192 192 192 128 128 128 255 0 0 0 255 0 255 255 0 0 0 255 255 0 255 0 255 255 255 255 255 0 0 0 0 0 95 0 0 135 0 0 175 0 0 215 0 0 255 0 95 0 0 95 95 0 95 135 0 95 175 0 95 215 0 95 255 0 135 0 0 135 95 0 135 135 0 135 175 0 135 215 0 135 255 0 175 0 0 175 95 0 175 135 0 175 175 0 175 215 0 175 255 0 215 0 0 215 95 0 215 135 0 215 175 0 215 215 0 215 255 0 255 0 0 255 95 0 255 135 0 255 175 0 255 215 0 255 255 95 0 0 95 0 95 95 0 135 95 0 175 95 0 215 95 0 255 95 95 0 95 95 95 95 95 135 95 95 175 95 95 215 95 95 255 95 135 0 95 135 95 95 135 135 95 135 175 95 135 215 95 135 255 95 175 0 95 175 95 95 175 135 95 175 175 95 175 215 95 175 255 95 215 0 95 215 95 95 215 135 95 215 175 95 215 215 95 215 255 95 255 0 95 255 95 95 255 135 95 255 175 95 255 215 95 255 255 135 0 0 135 0 95 135 0 135 135 0 175 135 0 215 135 0 255 135 95 0 135 95 95 135 95 135 135 95 175 135 95 215 135 95 255 135 135 0 135 135 95 135 135 135 135 135 175 135 135 215 135 135 255 135 175 0 135 175 95 135 175 135 135 175 175 135 175 215 135 175 255 135 215 0 135 215 95 135 215 135 135 215 175 135 215 215 135 215 255 135 255 0 135 255 95 135 255 135 135 255 175 135 255 215 135 255 255 175 0 0 175 0 95 175 0 135 175 0 175 175 0 215 175 0 255 175 95 0 175 95 95 175 95 135 175 95 175 175 95 215 175 95 255 175 135 0 175 135 95 175 135 135 175 135 175 175 135 215 175 135 255 175 175 0 175 175 95 175 175 135 175 175 175 175 175 215 175 175 255 175 215 0 175 215 95 175 215 135 175 215 175 175 215 215 175 215 255 175 255 0 175 255 95 175 255 135 175 255 175 175 255 215 175 255 255 215 0 0 215 0 95 215 0 135 215 0 175 215 0 215 215 0 255 215 95 0 215 95 95 215 95 135 215 95 175 215 95 215 215 95 255 215 135 0 215 135 95 215 135 135 215 135 175 215 135 215 215 135 255 215 175 0 215 175 95 215 175 135 215 175 175 215 175 215 215 175 255 215 215 0 215 215 95 215 215 135 215 215 175 215 215 215 215 215 255 215 255 0 215 255 95 215 255 135 215 255 175 215 255 215 215 255 255 255 0 0 255 0 95 255 0 135 255 0 175 255 0 215 255 0 255 255 95 0 255 95 95 255 95 135 255 95 175 255 95 215 255 95 255 255 135 0 255 135 95 255 135 135 255 135 175 255 135 215 255 135 255 255 175 0 255 175 95 255 175 135 255 175 175 255 175 215 255 175 255 255 215 0 255 215 95 255 215 135 255 215 175 255 215 215 255 215 255 255 255 0 255 255 95 255 255 135 255 255 175 255 255 215 255 255 255 8 8 8 18 18 18 28 28 28 38 38 38 48 48 48 58 58 58 68 68 68 78 78 78 88 88 88 98 98 98 108 108 108 118 118 118 128 128 128 138 138 138 148 148 148 158 158 158 168 168 168 178 178 178 188 188 188 198 198 198 208 208 208 218 218 218 228 228 228 238 238 238 EOF for t in "${!array[@]}"; { read -ra tmp <<< ${array[t]} diff= for ((i = 0; i < 3; i++)) { ((diff += tmp[i] > rgb[i] ? tmp[i] - rgb[i] : - tmp[i] + rgb[i])) } sort[diff]=$t } for i in "${!sort[@]}"; { printf '%s\n' "${sort[i]}" break }