Portál AbcLinuxu, 10. května 2025 13:32

Dotaz: Funkce jako příkaz

23.5.2012 17:15 Led
Funkce jako příkaz
Přečteno: 335×
Odpovědět | Admin
Hezké odpoledne,

Chtěl bych se zeptat jak použít funkci v bashi jako příkaz v shellu. Jde mi o použití netcatu s paramterem -c

Děkuji za pomoc
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.5.2012 17:25 NN
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pridat skript s funkci do /usr/sbin ? Nebylo by lepsi napsat o co se pokousite ? Jinak parametr -c lze pouzit napriklad takto(podobne, jako -e):
nc -c cal -l -p 1234
telnet localhost 1234
NN
23.5.2012 17:36 Led
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Jo urcite,

Jde mi o to posilat na nejaky port napr 8080 vypis ls -l a ten pak zobrazit v prohlizeci. Kod by mel vypadat nejak takto (soude meho odhadu:))

#! /bin/bash
fnc() {
..nejaky cyklus pro vypis ls -l
}

typeset -fx fnc
nc -l -p 8080 -c fnc

Bohuzel ne vzdy jsou odhady spravne:)
23.5.2012 17:45 l4m4
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Tohle fungovat nebude. Příkaz musí znát ten shell, který provádí obsah -c. Zdaleka nejjednodušší bude dát obsah fnc do samostatného souboru, který se pak dá spustit normálně.
23.5.2012 20:32 Led
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Tak ani to nepomohlo. Nevěděl by někdo o jineém řešení?
23.5.2012 21:37 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Funkce jako příkaz

Pridat funkciu priamo do konfiguracneho suboru ~/.bashrc , spustit source ~/.bashrc a funkcia je reprezentovana jej nazvom rovnako ako akykolvek iny prikaz v systeme pre daneho uzivatela. Urcite je mozne toto spravit aj pre vsetkych uzivatelov v systeme, zrejme nieco ako /etc/bashrc , treba pozriet manualove stranky, co sa ocakava.

23.5.2012 23:19 l4m4
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Toto není pravda hned v několika ohledech, např.:

1. Abychom se vůbec mohli bavit o funkcích shellu, musí to někde projít přes shell. Systémové volání execve() ti funkci shellu spustí těžko.

2. Ani v shellu není funkce vždy ekvivalentní programu. Pokus si myslíš opak, zkus
exec funkce
Taková věc nemá smysl, pročež taky nespouští žádnou funkci, ale vyhodí command not found (stejně to samozřejmě funguje pro builtiny).

3. Pokud program nějak čistí proměnné prostředí, než spouští shell, tak o tu funkci přijdeš a nový shell ji nezná. Smůla.

24.5.2012 09:51 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Funkce jako příkaz
Je to tak.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.