Rodina produktů Raspberry Pi se rozšířila o Raspberry Pi Smart Display Module. Deska pro Raspberry Pi Compute Module 5 se zasouvá přímo do displejů dle specifikace Intel SDM. Cena desky je 30 dolarů.
Byla vydána nová verze 2.56.0 distribuovaného systému správy verzí Git. Přispělo 104 vývojářů, z toho 39 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Hackerská skupina ShinyHunters oznámila průnik do informačních systémů FBI, prostřednictvím zero-day zranitelnosti v platformě Oracle PeopleSoft, kterou úřad využívá mimo jiné pro náborový portál FBIJobs.gov. Útočníci tvrdí, že získali až 3 TB dat o současných i bývalých zaměstnancích a uchazečích o práci. Jako důkaz zveřejnili vzorek přibližně 5 000 záznamů obsahující jména, adresy, telefonní čísla, data narození, čísla
… více »Doba kompilace linuxového jádra se díky rychlejšímu hardwaru a optimalizacím kbuildu snižuje k deseti sekundám. Nejnovější patche Lorenza Stoakse (vznikají i s pomocí SI) zkrátily na testovacím stroji dobu sestavení z dlouhých 22 vteřin na pouhých 15, a to bez použití RAMdisku. Testovací systém tvořily dva procesory AMD EPYC 9575F (oba dohromady poskytují celkem 128 jader a 256 vláken), čtyřiadvacet 64GB DDR5-6400 paměťových modulů a
… více »Před rokem a půl vývojáři postmarketOS informovali, že pro projekt hledají nové jméno. Včera bylo oznámeno: postmarketOS se nově jmenuje Nura.
Hra Factorio dorazila na Printables. Hned teď si můžete stáhnout 65 různých modelů a nechat celou mimozemskou planetu oživnout na svém stole.
GNU Project Debugger aneb GDB byl vydán ve verzi 18.1. Podrobný přehled novinek v souboru NEWS.
Prezident USA Donald Trump během svého projevu na valném shromáždění OSN 22. září 2026 prohlásil, že umělá inteligence 'bude dále oficiálně nazývána superinteligencí', zkráceně SI. Svůj návrh zdůvodnil takto: 'Použití slova artificial činí inteligenci falešnou. Ona falešná není, ve skutečnosti je úžasná'. Zároveň ve svém proslovu prohlásil, že Spojené státy kategoricky odmítají jakékoliv pokusy o vytvoření 'globalistického
… více »Čínská technologická firma Xiaomi představila novou verzi 2.6 svého modelu MiMo, váhy modelů MiMo‑V2.6‑Pro‑RL a MiMo‑V2.6‑Flash‑RL jsou dostupné na HuggingFace pod licencí MIT. Výkonnější varianta Pro má přes bilion parametrů, z toho 42 miliard aktivních, úspornější Flash 309 miliard parametrů, z nichž se při generování aktivuje přibližně 15 miliard. Oba modely mají délku kontextového okna milion tokenů. Tyto MoE modely zvládají
… více »Proběhl Snapdragon Summit 2026. Společnost Qualcomm se mimo jiné pochlubila během Linuxu na čipech Snapdragon X2. Zatím pouze v ranní verzi vhodné pro vývojáře linuxových distribucí a přispěvatele do jádra Linux.
read y
${pole[$y]}
ale v okamziku preklepu jsem na mrtvem bode.
check() {
what=$1
shift
for i in $@; do
[ "$what" = "$i" ] && return 0
done
return 1
}
while true; do
read x
check $x alpha beta gamma && break
done
echo $x
while true; do
read x
check $x alpha beta gamma && break
done
Je-li splněna podmínka true, provede se cyklus. Protože následně volám funkci, která vrací true, nebo false, cyklus bud probehne, nebo ne.
Volám funkci check a $x, kterou zadal uživatel odesílám jako první poziční parametr. alpha beta gamma odesílám jako další poziční parametry.
Takže takhle může přece odeslat přímo to pole a zpracuje se to stejně???
check $x ${pole[*]}
funkce check()
definuju promenou what=$1, což znamená, že ji přiřadím první poziční prametr, tedy naše $x, který zadal uživatel.
shift zajistí posun poz. par.
a následně v cyklu for přiřadím prom. i všechny poziční parametry pomocí $@.
[ "what" = "i" ] && return 0jestli se what = i, tedy jestli naše zadané $x se najde ve výpisu poz. par. ($@), pak funkce vrátí nepravdu a protože podmínka cyklu while nebyla splněna, cyklus neproběhne a script pokračuje dalším příkazem. Zde mám nejasnost s shift. Neměl by být umístěn později? Když posunu poz. param., tak $1 zmizí a na její místo se posune $2. To by přece znamenalo, že už potom nebude figurovat v $@ a tedy se nesplní podmínka [ "what" = "i" ] No ono to funguje, takže tohle nechápu. Mě připadá logické umístit shift na konec funkce.
check očekává jako 1. parametr to zadané x (jehlu) a na všech dalších pozicích seznam povolených hodnot (kupku sena). Když si do what přiřadím $1 a provedu shift, v seznamu parametrů mi zbudou jen ty povolené hodnoty. Pokud je při provádění cyklu splněna podmínka [ "$what" = "$i" ], znamená to, že jehla se v kupce sena našla a funkce tím pádem vrátí pravdu (nulová návratová hodnota znamená úspěch). Pokud cyklus proběhne do konce a jehla se nenajde, funkce vrátí 1, což značí neúspěch. check bych nazval funkcí s negativním očekáváním.
Cyklus while true sám o sobě nikdy neskončí – true bude pravda až do konce světa
.
check $x alpha beta gamma && break znamená, že v případě úspěchu funkce check() se nekonečný cyklus přeruší a program pokračuje dál. break je jedna z možností, jak přerušit nekonečný cyklus. Jestli z nějakého jazyka znáš cyklus s logikou do – while, tak tohle je obezlička pro jazyky, které mají jen while – do:
while (true) {
delej_neco();
if (!podminka) {
break;
}
}
Volání pomocí check $x ${pole[*]} je samozřejmě v pořádku.
${pole[@]} místo ${pole[*]} popř. $@ místo $* kde to jen jde, poměrně často se vyskytne podmínka že hodnoty v poli mohou obsahovat mezery.
A="ls -a"
$A
spustí ls s parametrem -a. V tomhle případě je jedno, co je tam za proměnnou, důležité je, že její výskyt není v uvozovkách. Když to dáme do uvozovek, žádná expanze na pole se neprovede:
A="ls -a"
"$A"
zahlásí chybu, že program "ls -a" neexistuje. Je ale výjimka: pokud do uvozovek dáte proměnnou $@ nebo ${xxx[@]}, expanze na pole se provede, ale ne podle IFS (mezery apod.), ale tak, aby byly zachovány původní parametry/prvky pole. Příklad (spusťte a sledujte chybové hlášky):
set ls "adresář neexistuje"
$*
"$*"
$@
"$@"
Závěr: když nechcete expanzi, používejte @ místo * a dávejte to do uvozovek.
in_array() {
local i
needle=$1
shift 1
for i in "$@"; do
[[ "$i" == "$needle" ]] && return 0
done
return 1
}
pole[0]=foo
pole[1]=bar
pole[2]="dve slova"
read slovo
in_array $slovo "${pole[@]}" && echo ok
in_array()
{
local i
needle=$1
shift 1
# array() undefined
[ -z "$1" ] && return 1
for i in $@
do
[ "$i" == "$needle" ] && return 0
done
return 1
}
pole[0]=foo
pole[1]=bar
pole[1]="dve slova"
read slovo
if in_array $slovo ${pole[@]}; then
echo ok
else
echo ko
fi
# array() undefined
[ -z "$1" ] && return 1
Tohle je hodně divné. Proč by se v poli, které začíná prázdným řetězcem, nemělo dát nic najít?
Tiskni
Sdílej: