Malo preusmeritve lupine

10. maj 2009 z Prashant
Pila pod: tehnologija

Tukaj je, kako smo normalno delati lupine preusmeritev
$ ./pgm.sh args >out.txt 2>err.txt
Hotel sem spremeniti to malo in vodijo naslednje
$ ./pgm.sh args
z zahtevo, da mora proizvodnja in napake iti do neke datoteke izračunano v notranjosti pgm.sh na podlagi argumenta. Ena nazoren primer, ko bi lahko datum je del argumenta. Torej bi radi stdout iti reči / vaše / imenik / pgm_out_YYYYMMDD.txt 1

Problem s standardno način preusmerjanje N>file.txt kar pomeni, združuje datoteke deskriptorjev N do datoteka.txt, je, da deluje samo za novo viličasti proces in ne za tekoče procesa.
tako
$ echo hi 1>out.txt ; echo hii . bo poslal na hi out.txt temveč bo izpisal hii v stdout 2

To je, če exec gre za našo pomoč. Če dodamo exec 1>somefile.txt potem izhod iz preostalega scenarij pojdite na somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / Bo test.sh preusmeriti hi, pa tudi, da hii out.txt

Podobno kot preusmerite stdout ter stderr bomo narediti kaj takega
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Zdaj prihajajo nazaj na prvotno točko preusmerjanje do neke datoteke iz notranjosti lupine, recimo Program izračuna ime datoteke v nekaterih spremenljivo izhodna_datoteka, bi lahko storili le exec 1>$OUTFILE

, Ki rešuje trenutni problem. Toda lahko vam je všeč, da gredo skozi naslednji primer, ki dosega "z vzorčenjem dostop 'v datoteko v lupinski skript. Primer je od tu
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890

S pripombami, ta koda je samoumevne.
-
1 , lahko je tudi treba storiti z $ ./pgm.sh args >pgm_out`date +%Y%m%d` , ampak ideja je, da ustvari to ime datoteke na osnovi neke logike v sam program.
2 1 na 1> out.txt je odveč, vendar je tu pojasnjuje, da so preusmerjanje FD 1

Komentarji

    blog pripombe, ki jih napaja Disqus