[NTLUG:Discuss] KSH scripting challenge

Leroy Tennison leroy_tennison at prodigy.net
Thu Sep 17 23:52:06 CDT 2009


Chris Cox wrote:
> Leroy Tennison wrote:
>> I want to include some comments in the output of a script but compliance 
>> also wants the commands contained in the script to be output along with 
>> their result.  The -x switch will accomplish the latter but creates a 
>> problem with the former.
>>
>> If I use the echo command in a script (call it demo) as follows:
>>
>> 	ksh -x demo
>>
>> I get
>>
>> 	+ echo 'Step 1'
>> 	Step 1
>>
>> If I echo redirect output to /dev/null using the same execution above I get:
>>
>> 	+ echo 'Step 1'
>> 	+ 1> /dev/null
>>
>> which is better but I still have to live with the unwanted "echo" and "+ 
>> 1> /dev/null" (bash doesn't list the annoying "+ 1> /dev/null" but it's 
>> not an option).
>>
>> The -x option doesn't output comments (at least not ones beginning with 
>> a #).
>>
>> An example of what I really want the output to look like is -
>>
>> 	Step 1
>> 	+ grep -v ^# inittab | grep initde
>> 	id:5:initdefault:
>> 	+ grep ca: inittab
>> 	ca::ctrlaltdel:/sbin/shutdown -r -t 4 now
>>
>> and so on.
>>
>> Any ideas or better suggestions?
> 
> Well... I think I lost something in the translation of the above.  But here's my attempt at trying to understand what you are wanting:
> 
>     : Step 1
>     grep -v '^#' /etc/inittab | grep initde
>     grep ca: /etc/inittab
> 
> Now... the pipeline will likely create a fork and thus each element of the pipeline will show up in the output as an executed statement by itself.
> That might now be what you want, but that's pretty much what you get.  In your case, the end result could be achieved without the dual grep.
> 
> The ':' CAN act like a comment, just that it has evaluation side effects as well.  But as long as special evaluated characters are avoided or escaped,
> this works... if I get what you're wanting.  If this is to be captured to a file make sure to redirect stdout and stderr to the file.
> 
> ksh -x demo >demo.out 2>&1
> 
> 
> 
> _______________________________________________
> http://www.ntlug.org/mailman/listinfo/discuss
> 

Thanks for the reply, another possibility.



More information about the Discuss mailing list