Portál AbcLinuxu, 15. května 2025 08:02
LANG=C grep -qE "^[a-z-]*$"
sed -n '/^[a-z-]*$/p'
A v shelly napr.:
$ VAR="ads-sa" ; if [ `echo $VAR | sed -n '/^[a-z-]*$/p'` ]; then echo "VAR OK"; fi
VAR OK
$ VAR="3adssa" ; if [ `echo $VAR | sed -n '/^[a-z-]*$/p'` ]; then echo "VAR OK"; fi
$
if [[ ! "$VAR" =~ ^[a-z-]*$ ]]; then echo "Obsahuje nepovolene znaky" finicméně je pravda že to závisí na
shopt -u nocasematch
a někdy (nevím přesně kdy, ale s cygwin
to u mě platí) to funguje správně jen s LC_COLLATE=C
.
nocasematch
se dá vyřešit jednoduše tak, že tam uvedete i upper-case znaky: ^[a-zA-Z-]*$
.
^[[:lower:]-]*$
a je pokoj…
if [[ ! "$VAR" =~ ^[[:lower:]-]*$ || ! "$VAR" =~ ^[a-z-]*$ ]]; then echo "Obsahuje nepovolene znaky" fi
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.