Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: virtual files?



20.04.2016, 04:19, "Emanuel Berg" <embe8573@xxxxxxxxxxxxx>:
> Here is a program I just wrote.
>
> Feel free to comment on any part.
>
> However my specific question is, instead of using the
> "result_file" stuff, is there support for
> I suppose "virtual files" or basically a data structure
> that can be used transparently as a file, or with but
> small adjustments?
>
> TIA.
>
> #! /bin/zsh
>
> # This file: http://user.it.uu.se/~embe8573/conf/.zsh/money
>
> # zsh CLI to Internet inflation calculator.
> #
> # Try, for example, three K2 expeditions:
> #
> # $ inflation 9000 1938; inflation 30958.33 1953; inflation 108000 1954
> #
> # which yields:
> #
> # $151,999.15
> # $276,111.20
> # $956,069.00
>
> inflation () {
>     local usd=${1:-10}
>
>     # year
>     local then=${2:-1950}
>     local now=`date +"%Y"`
>
>     local result_file=result
>
>     local link="http://data.bls.gov/cgi-bin/cpicalc.pl?cost1=$usd&year1=$then&year2=$now";
>     wget -q $link -O $result_file
>
>     echo -n \$
>     grep \"answer\" $result_file | cut -d \$ -f 2 | cut -d \< -f 1
>
>     rm $result_file
> }

In some cases you may use `>(process)` to create file descriptor that will be used like a named pipe and may replace real files in some cases (it does not support seek(), also some processes have a habit of closing all file descriptors except stdin/stdout/stderr). But it is launched in subshell which limits the usefullness further (i.e. you cannot directly save result in a variable).

Specifically this function does not need >() or any file at all:

    …
    echo -n \$
    wget -q $link -O- | grep answer | cut -d \$ -f2 | cut -d \< -f1
    …

>
> --
> underground experts united .... http://user.it.uu.se/~embe8573
> Emacs Gnus Blogomatic ......... http://user.it.uu.se/~embe8573/blogomatic
>                    - so far: 25 Blogomatic articles -



Messages sorted by: Reverse Date, Date, Thread, Author