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í
×
včera 09:00 | Komunita

V Brně na FIT VUT probíhá DevConf.CZ 2020, již dvanáctý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě. Na programu je celá řada zajímavých přednášek a workshopů. Aktuální dění lze sledovat například na Twitteru.

Ladislav Hagara | Komentářů: 0
23.1. 23:44 | Komunita

Společnost Psyonix, v květnu 2019 koupena společností Epic Games, oznámila konec podpory počítačové hry Rocket League na Linuxu a macOS. Poslední aktualizace pro tyto operační systémy vyjde v březnu a odstraní možnost hrát tento automobilový fotbal online.

Ladislav Hagara | Komentářů: 12
23.1. 14:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 89 (pdf), HackSpace 26 (pdf) a 27 (pdf) a Wireframe 28 (pdf), 29 (pdf) a 30 (pdf).

Ladislav Hagara | Komentářů: 0
23.1. 14:11 | Nová verze

Byla vydána nová verze 12.7 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu.

Ladislav Hagara | Komentářů: 2
23.1. 11:44 | Zajímavý článek

Michael Stapelberg na svém blogu popisuje projekt minitrd, který je součástí linuxové distribuce distri. Jedná se o implementaci initramfs v programovacím jazyce Go. V článku popisuje jak funguje a srovnává časy sestavení pomocí dracutu a dobu bootování. Pro zrychlení používá různé triky jako například pigz místo gzipu.

joejoe | Komentářů: 11
22.1. 21:33 | Nová verze

Sway, dlaždicový (tiling) správce oken pro Wayland kompatibilní s i3, byl vydán ve verzi 1.4. Do vývoje se zapojilo 52 vývojářů. Přehled novinek na GitHubu. Zdůraznit lze podporu VNC (wayvnc) nebo částečnou podporu Mate panelu.

Ladislav Hagara | Komentářů: 8
22.1. 19:55 | Nová verze

Dokumentační tým LibreOffice vydává aktualizovanou příručku pro LibreOffice Math pro verzi LibreOffice 6.4. Update příručky provedl ruský dobrovolník Roman Kuzněcov. Český překladatelský tým hledá další překladatele pro překlad příruček, detaily na wiki.

Zdeněk Crhonek | Komentářů: 0
22.1. 19:00 | Zajímavý projekt

CutiePi Shell (GitHub) je nové open source uživatelské rozhraní pro mobilní zařízení vytvořené pro tablet CutiePi postavený na Raspberry Pi.

joejoe | Komentářů: 1
22.1. 11:44 | Nová verze

Vyšla nová verze nástroje pro správu diskových oddílů GParted a distribuce GParted Live, která obsahuje tento a další nástroje pro zálohování či obnovu dat. GParted 1.1.0 aktualizuje překlady a opravuje chyby včetně v např. přesunu uzamknutých šifrovaných oddílů LUKS, výpočtu velikosti souborového systému JFS či rozpoznávání členů ATARAID a jejich stavu. GParted Live 1.1.0-1 pak obsahuje novou verzi GParted, Linux 5.4.13 a vůbec novější balíčky z Debianu Sid.

Fluttershy, yay! | Komentářů: 1
22.1. 09:55 | Zajímavý článek

Jiří Eischmann se v příspěvku /e/: Android bez Googlu na starém telefonu na svém blogu podělil o zkušenosti s mobilním operačním systémem /e/ (Wikipedie) na telefonu Samsung Galaxy S4 Mini: Pokud hledáte pro svůj androidí telefon systém bez závislosti na Googlu, je to asi ta nejlepší volba.

Ladislav Hagara | Komentářů: 17
Zdají se vám sny s IT tématikou?
 (9%)
 (1%)
 (13%)
 (17%)
 (53%)
 (7%)
Celkem 261 hlasů
 Komentářů: 10, poslední 18.1. 16:18
Rozcestník

www.AutoDoc.Cz

Dotaz: Jak předat funkci v bash název proměnné?

4.2.2019 16:41 Zacatecnik
Jak předat funkci v bash název proměnné?
Přečteno: 288×
Ahoj,

mám taková kód ale nefunguje to, může prosím někdo poradit?
VAR="4561"

function foo {
  echo ${1} ${2}
}

foo VAR "blabla" 

požadovaaný výsledek: 4561 blabla

Řešení dotazu:


Odpovědi

4.2.2019 16:45 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?
foo "$VAR" "blabla" 
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
k3dAR avatar 4.2.2019 16:51 k3dAR | skóre: 57
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?
${VAR}
porad nemam telo, ale uz mam hlavu... nobody
4.2.2019 17:10 Zacatecnik
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?
Jasně ale potřebuji naplnit tu proměnnou VAR až uvnitř funkce - jako by byla lokální a jako parametr předat jen název té proměnné. Díky

function foo {
  local VAR="4561"
  echo ${1} ${2}
}

foo VAR "blabla" 

požadovaaný výsledek: 4561 blabla
Řešení 1× (Michal Kubeček)
k3dAR avatar 4.2.2019 17:51 k3dAR | skóre: 57
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?
jasne, ale to nesmis puvodne psat spatne zadani ;-)
function foo {
  local VAR="4561"
  echo ${!1} ${2}
}

foo VAR "blabla" 
porad nemam telo, ale uz mam hlavu... nobody
Řešení 1× (Michal Kubeček)
xkucf03 avatar 4.2.2019 17:59 xkucf03 | skóre: 48 | blog: xkucf03
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?

V Bashi můžeš mít proměnnou proměnnou, takže jde napsat třeba:

VAR=4561
foo() { echo "${!1}" "$2"; }
foo VAR blabla

a vypíše to:

4561 blabla

Tzn. do funkce nepředáváš hodnotu proměnné, ale její název a hodnota se zjistí až uvnitř té funkce. Dá se takhle pěkně prasit… takže pokud nemáš hodně dobrý důvod, proč tohle dělat, tak to nedělej, protože to po tobě nikdo nepřečte (v případě delších skriptů).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
4.2.2019 23:08 Andrej | skóre: 47 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Jak předat funkci v bash název proměnné?

Snadné řešení je "${!1}", jak už tu párkrát zaznělo. Já tedy přidám ještě jednu možnost — poor man’s pointer v Bashi. Čistě pro zajímavost.

VAR="4561"

function foo {
  local -r -n first_arg_ref="$1"
  local -r -i last_arg_name="$#"
  echo "$first_arg_ref" "${!last_arg_name}"
}

foo VAR "blabla"

Mimo funkci by to bylo declare -n místo local -n, ale jinak je princip stejný. To je drobné kouzlo, které umožňuje „dereferencovat“ „pointer“ bez vykřičníku, tj. chová se to pak jako reference. Super to je, když potřebuju předat do funkce několik polí. Nebýt -n, musel bych použít eval.

ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ

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.