thank you very much Dave, i have resolved this issue by using your code.
> Date: Mon, 21 Jan 2013 11:47:06 -0500
> From: anderson@redhat.com
> To: crash-utility@redhat.com
> Subject: Re: [Crash-utility] questions about crash utility
>
>
>
> ----- Original Message -----
>
> > anyway, i can just ignore this issue right now.
> > the remaining issue is how to make my procedures automatically.
> > my purpose is to get trace ring buffer from kernel dump file and create a new
> > file which name is like trace_$date.txt. the $date should be the time this text file
> > is generated.
> > what i am doing now is to create a .crashrc file in the ./ directory, and try to
> > use file to make everything automatically. i need to make below procedures
> > automatically:
> > 1. load trace.so automatically. it is ok now.
> > 2. read current date. it is ok now.
> > 3. dump the kernel trace ring buffer into new text file the name of which contains current date. cannot do this now.
> > 4. exit crash utility automatically. it is ok now.
> >
> > my .crashrc is as below, i don't know how to do the step 3 above:
> >
> > ---------------------- script start -------------------------------------------------------
> >
> > echo $(date '+%Y%m%d_%H%M%S') <------ it is ok
> >
> > #cur=$(date '+%Y%m%d_%H%M%S') <----- it failed to use variable to store date
> > #echo $cur <------it failed
> >
> > extend trace.so <------ it is ok
> >
> > trace report >./report_test.txt <------- to dump to a file which uses fixed file name, it is ok.
> >
> >
> > trace report >./trace_$(date '+%Y%m%d_%H%M%S').txt <--- it failed when exit
> > ---------------------- script end -----------------------------------------------
> >
> > please help, thanks.
>
> For a shell command, you would need to precede the command with a "|" or
> a "!". But the variable assignment would not persist, because each line
> in the .crashrc (or any input file) is done as separate shell invocation.
>
> For example, this input file has four separate shell invocations:
>
> crash> !cat input
> !cur=$(date '+%Y%m%d_%H%M%S'); echo $cur
> !echo cur: $cur
> |cur=$(date '+%Y%m%d_%H%M%S'); echo $cur
> |echo cur: $cur
> crash>
>
> So the "echo" commands have no knowledge of the prior shell command's
> setting of the "cur" variable:
>
> crash> < input
> 20130121_112503
> cur:
> 20130121_112503
> cur:
> crash>
>
> And with respect to this:
>
> crash> trace report >./trace_$(date '+%Y%m%d_%H%M%S').txt
>
> When the command is invoked from within the crash utility, crash simply
> opens a file with the name "./trace_$(date '+%Y%m%d_%H%M%S').txt", and
> redirects the output to it. The crash utility does not do any kind of
> parsing of the output file name for any embedded $(shell-cmd) or
> `shell-cmd` usage.
>
> Maybe you could do something like this in your .crashrc file:
>
> > trace_output
> !ln trace_output $(date '+%Y%m%d_%H%M%S')
> extend trace.so
> trace report > trace_output
> !rm -f output
>
> Dave
>
>
>
>
>
>
> --
> Crash-utility mailing list
> Crash-utility@redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility