Portál AbcLinuxu, 18. dubna 2024 03:25


Dotaz: redirect stdin ze scriptu

19.1.2010 17:19 Ivan
redirect stdin ze scriptu
Přečteno: 491×
Odpovědět | Admin
Ahoj preboval bych spustit celkem komplikovanej perlovej script ze shell scriptu a nechci to distribuovat ve vice souborech. Muj script vypada nejak takhle:

#!/bin/sh

nejaky testy

PERLBIN=neco

nejaky dalsi testy v shellu

exec ${PERLBIN} <<EOF

a tady uz je kod s perl syntaxi

EOF

A ja mam prave problem s tim exekem s redirectem. Pamatuju si, ze kdysi jsem vedel jak to udelat a jsem si celkem jistej, ze to jde. Proste potrebuju z shellu udelat exec na jinej intepreter a zbytek souboru mu presmerovat na stdin s tim aby se zbytek souboru nijak neinterpretoval shellem. Pokud se pamatuju tak nejak takhle byly implementovany shar archivy. Udelal se exec na cpio a zbytek "shell" scriptu se presmeroval na stdin.


Řešení dotazu:


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

Odpovědi

19.1.2010 18:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
RTFM: perldoc perlrun
19.1.2010 18:57 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dá se to dělat tak, že si označíte (číslem řádku nebo nějakou značkou), kde začíná ten zbytek, pak to pomocí sed nebo tail vypreparujete z $0 a pošlete přes rouru dál.
In Ada the typical infinite loop would normally be terminated by detonation.
19.1.2010 19:02 Ash | skóre: 53
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aby se zbytek shellu neinterpretoval shellem zajistíte jednoduše, za poslední řádku která se má interpretovat napíšete "exit".

Jinak něco podobného najdete když dáte do google "bash self extracting script", tam se jedná o extrakci archivu přidaného za skript v bashi. To je něco podobného. Ale asi by se našlo přimo i něco s tím perlem.
Řešení 1× (maleprase)
20.1.2010 13:33 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
co takhle:
#!/bin/bash
a=50
exec perl << 'EOF'
$a = 10;
print "a=$a\n";
EOF
20.1.2010 15:09 Ivan
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Joo, to je ono - dik, ja vedel ze to musi jit i bez toho tail-u.

PS: delam to proto, ze mam na systemu vice instalaci perlu, proto nejdrive musim najit tu spravnou nez sputim svuj script.
20.1.2010 15:22 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Ja mam asi problem s ocami, ale ako sa to lisi od toho kusu kodu, ktory mas v uplne povodnom prispevku?
If you hold a Unix shell up to your ear, you can you hear the C.
20.1.2010 17:04 Ivan
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
ten EOF je v apostrofech.
21.1.2010 08:20 cronin | skóre: 49
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
A pred prikazmi nie su biele znaky. Viac v man sh, sekcia HERE DOCUMETNS.
21.1.2010 13:09 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: redirect stdin ze scriptu
Problem bol fakt len v ociach. Co spravi quotovani delimiter Here Document to poznam. A BTW tie biele znaky sa daju osefovat cez <<-
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, (c) 1999-2007 Stickfish s.r.o.