Zdravím. Nejdříve skript který "zazlobil":
#! /usr/bin/env bash
# Ukončovací funkce s chybovou hláškou.
konec (){
echo "only numbers in range from 0 to $max_bright" >&2
exit 1
}
# Adresa složky s hodnotama backlightu
slozka=/sys/class/backlight/amdgpu_bl0
# Soubor s podsvětlením
backlight_adr="$slozka/brightness"
# Maximální povolená hodnota podsvětlení
max_bright=$(cat $slozka/max_brightness)
# Načtení argumentu
[ "$1" ] && { aktual=$1; } || aktual=$(xargs $1)
# Test na argument hodnoty integer
# Regulární výraz na test čísla minimálně jedno a maximálně tříciferné
! [[ $aktual =~ ^[0-9]{1,3}$ ]] && konec
# Test na mezní hodnoty
[ $aktual -le $max_bright ] && [ $aktual -ge 0 ] && { echo $aktual > $backlight_adr &2>/dev/null ; } || konec
# echo $aktual
Tento skriptík nastavuje podsvětlení displeje na mém ntb. Předám mu jak chci aby mne to svítilo do očí. Skript zkontroluje jestli je hodnota v pořádku a nastaví ji. Avšak díky chybné konfiguraci mé klávesnice jsem dnes narazil na zajímavou věc. Regulární výraz ^[0-9]{1,3}$
propustil i znaky které neměl. Vyřešil jsem to přepsáním na ^[0123456789]{1,3}$
konkrétně se jednalo o znak ¹ a nejspíš o znak down
Nemohu však nějak pobrat proč to tak je. Měl jsem za to, že [0-9] je to samé jako [0123456789]
Dohledal jsem že někteří lidé doporučují delší zápis kvůli míchání znaků s jejich národními znaky. Avšak proč se tak děje?