abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 1
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 24
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 785 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Bash - funkce ktera vrati hodnotu

10.7.2008 08:57 anon123 | skóre: 35 | blog: ganomi
Bash - funkce ktera vrati hodnotu
Přečteno: 1981×

Chtel bych vedet, jak se to dela spravne. Procetl jsem par Bash Programming Howtos, ale nejak jsem nenasel odpoved.

Chci dosahnout aby mi funkce vratila hodnotu.

Vetsinou jsou vsude priklady, jak vratit ciselnou hodnotu, ale to nepracuje na string.

Zajima me tedy, jak vratit string/character hodnotu z funkce a jestli je to dobra practice?

Zda se vam, ze to delam spravne nebo ne:

#!/bin/bash

f_change () {
local changedWord=""

echo -e "give me word: "
read changedWord
echo $changedWord

eval $1=$changedWord
}


test="super"
echo -e "var before: $test"
f_change test
echo -e "Returned from function: $test"

Odpovědi

10.7.2008 09:40 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
Nevím, k čemu má toto sloužit, ale skript je v zásadě správně, jen místo eval… napište:
test "$1" = "$changedWord"
Návratová hodnota funkce či jiného příkazu se ukládá do proměnné $?, můžete ji přidat do posledního výpisu. Pravdivost je trochu neobvykle reprezentována hodnotou 0 a nepravdivost 1. Je tomu tak proto, že nula je návratovým kódem příkazů provedených úspěšně, zatímto nenulové hodnoty značí nesplnění úkonu, chybu.
10.7.2008 13:22 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

Samozrejme je to zjednoduseny priklad. Jen me zajima, jak pasnout string a return string. Protoze u ciselnych hodnot se pouziva return, ale to na string nejak nefungovalo.

10.7.2008 13:29 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

Jo jeste bych se chtel zeptat, proc "test". Jakou to ma funkci. Kdyz me odkaze na cteni, tak je to ok. Nic takoveho jsem na webu nenasel. Hledal jsem "bash programming function".

Mozna jeste jaky je rozdil v eval a test v tomto pripade. Vsechny ukazky scriptu co jsem nasel uvadely jen eval.

10.7.2008 14:29 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

To je proto, že jsem si neuvědomil, že chcete, aby funkce vracela řetězec. Po té mnou navrhované změně by funkce porovnávala zadaný parametr s řetězcem získaným ze standardního vstupu, což je něco úplně jiného. Vracet řetězec není možné. Jednou z cest je to, co už tu bylo psáno:

function vstup() {
  echo -n "Zadej něco: " 1>&2
  read str
  echo $str
}
HODNOTA="$(vstup)"
echo "Byl zadán tento řezězec: \"${HODNOTA}\""

Je třeba přesměrovat první echo na chybový výstup, protože funkce na standardní výstup pošle načtenou hodnotu.

Postupovat lze samozřejmě i jinak, totiž „změnit hodnotu proměnné“.

function vstup() {
  echo -n "Zadej něco: " 1>&2
  read $1
}
vstup HODNOTA
echo "Byl zadán tento řezězec: \"${HODNOTA}\""
10.7.2008 11:14 pnemec | skóre: 8 | blog: jotter
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
pokud vim tak jedine pres echo, nebo globalni promena.
function test(){
echo "result"
}
local v=$(test)
10.7.2008 13:25 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

Na spouste webech se pise prave pres tu globalni promenou. Ale to se mi zda dost neprakticke. Chci mit funkci univerzalni, bez toho aniz by byla zavisla na globalni promene. Ale nevim jestli se to v Bash programovani da. Teda asi jo, viz muj priklad, ale nevim, jestli je to OK.

V C, Jave, atd, je normalni pasnout a vratit promene.

Nejsem velky programator, ale na vejsce jsem pres to prosel.

10.7.2008 14:35 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
vyzkousel si to reseni od 'pnemeca'? je funkcni, nevim, co resis.
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
10.7.2008 12:33 Semo | skóre: 44 | blog: Semo
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
Ak chces nastavovat navratovu hodnotu, tak na konci fcie zavolas return a potom sa na to odkazujes ako na beznu navratovu hodnotu pomocou $?
f() {
  return $1
}

f 5
[[ $? == 5 ]] && echo hura
alebo ako radi kolega pnemec vyssie. Bash bezne nerozlisuje medzi textovou a ciselnou hodnotou. Preto mi v prikalde funguje test $? == 5 (textove porovnanie) a fungovalo by aj $? -eq 5 (cislene porovnanie). V podstate vsetko je text (ak nie je deklarovane inak), dokym sa k tomu neprisutpuje ako k cislu. Doporucujem man bash.
If you hold a Unix shell up to your ear, you can you hear the C.
10.7.2008 13:21 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

Dovolim si s vami nesouhlasit

Priklad, ktery jste uvedl plati jen pro ciselne hodnoty. Vyzkousejte si pasnout do funkce nejake slovo a return to nevrati.

Prave proto se tu ptam. Na internetu jsem toho precetl furu, ale moc nic nemuzu sehnat, protoze vsude jsou priklady jen na ciselne hodnoty.

Samozrejme to co jsem napsal je jen zjednoduseny priklad priklad.

Jedine co jsem nejak dal dohromady, je to co jsem tu napsal jako priklad. Proto jsem se zeptal jestli je to spravne, nebo jestli se to da udelat nejak lepe.

Co takhle, kdyby jste si to vyzkousel :-). Jinak diky za snahu.

Fuky avatar 10.7.2008 13:34 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu

Funkce může vracet pouze celočíselnou hodnotu, pro přirovnání je to asi stejné jako kdyby jsi chtěl, aby návratová hodnota programu byl řetězec. Dívej se na to tak, že Bash funkce je program a její návratová hodnota informuje o jeho úspěšném/neúspěšném ukončení.

Jinak jak Ti radí výše, lze získat i řetězec pomocí echo.

Co se týče hledání a příkladu, tak ten je přímo tady na Ábíčku Funkce a příkazy ;-)

10.7.2008 13:38 dasd
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
Podle me nemuze promena $? obsahovat jine znaky nez (mala) cisla (definice bashe, je to totiz chybovy kod). Na vraceni stringu se obvykle pouziva konstrukce typu:
f() { echo $1; }
A=$(f xxx)
echo Return code: $?
echo Return value: $A
10.7.2008 13:58 Semo | skóre: 44 | blog: Semo
Rozbalit Rozbalit vše Re: Bash - funkce ktera vrati hodnotu
Pokial v bashi nevidis rozdiel medzi hodnotou, ktoru funkcia vracia (ci uz textova alebo ciselna) a medzi "navratovou hodnotou/kodom" funkcie (prikazu, programu,...), tak si fakt budes musiet ten manual precitat.
If you hold a Unix shell up to your ear, you can you hear the C.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.