[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash question: get output as a variable?



On Thu, Feb 4, 2010 at 11:32 PM, Stephen Powell <zlinuxman@wowway.com> wrote:
> On Thu, 4 Feb 2010 17:09:28 -0500 (EST), Dotan Cohen wrote:
>> I'm scripting a backup solution, the line that does the business looks
>> like this:
>>
>> tar -zcvf - *  --exclude-from $EXCLUDES  | openssl des3 -salt -k $1 |
>> dd of=$(hostname)-$(date +%Y%m%d).tbz
>>
>> Because of the "v" flag tar writes to stdout the name of each file
>> copied. How can I get that output redirected to a variable, to use
>> later in the script?
>
> First of all, let me preface my remarks by saying that I am just
> learning shell scripting myself and definitely consider myself a
> novice.  Some guru out there may (and probably does) know a better
> way.
>
> Using a variable is problematic, since a pipeline runs in a subshell
> environment.  In fact, each stage of the pipeline is a separate
> process.  Thus, any variables set in a pipeline stage do not
> affect the values of the corresponding variable names in the shell
> environment that invoked the pipeline.
>
> How about something like this?
>
>   tar -zcvf - * --exclude-from $EXCLUDES | tee /tmp/data$$ | \
>   openssl ...
In this case output goes to stderr, so:

tar -zcvf - * --exclude-from $EXCLUDES 2> /tmp/data$$ | openssl ...


>   .
>   . logic to process the /tmp/data$$ data file
>   .
>   rm /tmp/data$$
>
>
>
> --
> To UNSUBSCRIBE, email to debian-user-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
>


Reply to: