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

Re: Bash question: get output as a variable?



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 ...
   .
   . logic to process the /tmp/data$$ data file
   .
   rm /tmp/data$$
 


Reply to: