En bash
un nombre de variable válido se compone de uno o más caracteres de un solo byte -, siendo el primero alfabético o guión bajo, y los restantes, si los hay, alfabéticos, 0123456789 o guión bajo.
Por ejemplo, Stéphane
es un nombre de variable válido solo en entornos locales donde é
es un solo byte -como en ISO -8859 -1 donde es el byte 0xE9, no en UTF -8 donde está codificado como 0xC3 0xA9.
Podrías hacer algo como:
#! /usr/bin/env bash
is_single_byte() {
local length_in_bytes length_in_chars
length_in_chars=${#1}
local LC_ALL=C
length_in_bytes=${#1}
((length_in_bytes == length_in_chars))
}
re='^[[:alpha:]_][[:alnum:]_]*$'
for var do
if is_single_byte "$var" && [[ $var =~ $re ]]; then
printf '"%s" is a valid variable name\n' "$var"
else
printf '"%s" is not a valid variable name\n' "$var"
fi
done
Если вопрос звучит так: «На сколько дистрибутивов Gnu/Linux мне нужно настроить таргетинг, чтобы получить 90% охват пользователей?»,
Скомпилируйте и свяжите со статическими библиотеками :, чтобы настроить таргетинг на дистрибутив. ИЛИ ссылка на библиотеки, которые установлены в том же каталоге.
Ориентируйтесь на x86 (возможно, 32-битные и 64-битные, я не знаю, сколько 64-битных дистрибутивов не имеют поддержки 32-битной пользовательской земли ), возможно, также нацелены на ARM от raspberry pi, может быть, sparc, может быть alpha, mips (вам придется провести опрос, чтобы узнать, сколько ваших потенциальных пользователей используют их.