KSH problem - how do i redirect three times?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting KSH problem - how do i redirect three times?
# 1  
Old 09-30-2008
KSH problem - how do i redirect three times?

i need to output an ls command to a file but also capture any errors from that command and output them to a log file and the screen.

if it's only possible to output them to a log file and not the screen then that's fine.

this is what i've tried so far, but it won't populate log.txt. i've purposefully added a directory (scripts) that doesn't exist to force the ls command to fail.

Code:
ls -lR  > scripts/release_file.txt 2>&1 | tee -a log.txt

i suspect it's the first redirection that's causing the problem as the command usually works if i'm not outputting the ls results to another file.
# 2  
Old 09-30-2008
how about
Code:
cat /dev/null >log.txt; ls -lR scripts/release_file.txt >log.txt 2>&1 ; cat log.txt

the cat /dev/null >log.txt will empty the log file, then the ls is run, and the results (including any errors) are sent to log.txt, then the results are output to the screen.
# 3  
Old 09-30-2008
Code:
cat /dev/null >log.txt; ls -lR scripts/release_file.txt >log.txt 2>&1 ; cat log.txt

the problem is, the command is part of a much larger script that outputs lots of info to the log file.

therefore, we can't empty the log file at the start...

Code:
cat /dev/null >log.txt;

or cat the log file at the end...

Code:
cat log.txt

...because of all the stuff that is already in the log file from previous commands executed in the script.
# 4  
Old 09-30-2008
Quote:
Originally Posted by mjays
i need to output an ls command to a file but also capture any errors from that command and output them to a log file and the screen.

if it's only possible to output them to a log file and not the screen then that's fine.

this is what i've tried so far, but it won't populate log.txt. i've purposefully added a directory (scripts) that doesn't exist to force the ls command to fail.

Code:
ls -lR  > scripts/release_file.txt 2>&1 | tee -a log.txt

i suspect it's the first redirection that's causing the problem as the command usually works if i'm not outputting the ls results to another file.

You were close...
Code:
$ ls data notthere
ls: notthere: No such file or directory
data
$ ls data not_there 2>&1 >stdout | tee stderr
ls: not_there: No such file or directory
$ cat stdout
data
$ cat stderr
ls: not_there: No such file or directory
$

# 5  
Old 09-30-2008
Hi

If your question is to redirect the output/err to file/errr-file

This will serve the purpose

Code:
cat local.csh 1>errt.txt 2>err.txt; cat err.txt

Hope i got your question right.

Regards,
Harsha
# 6  
Old 09-30-2008
Quote:
Originally Posted by Perderabo
You were close...
Code:
$ ls data notthere
ls: notthere: No such file or directory
data
$ ls data not_there 2>&1 >stdout | tee stderr
ls: not_there: No such file or directory
$ cat stdout
data
$ cat stderr
ls: not_there: No such file or directory
$

that's it, you've cracked it.

thanks for your help, and thank you everyone else.

p.s harshakirans - your solution didn't work, i kept getting - cat: cannot open err.txt. thanks though.
# 7  
Old 09-30-2008
sorry but i was a little premature.

things still aren't right.

the problem is, i need the script to exit if the ls command fails, but all it does is display the error and then write to the log file.

this is the ls command and the code after it

Code:
ls -lR ${BUILD_CODE} 2>&1 >${REL_FILES}/${RELNO}.txt | tee -a ${LOGFILE}
if [ $? -ne 0 ]
   then
       exit
fi

so you see, the tee command is probably successful which gives me a $status of 0.

how do i interogate the error from the ls command when it's tucked in way back there?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How do I count how many times a specific word appear in a file (ksh)?

Hi Please can you help how do I count the number of specific characters or words that appear in a file? (8 Replies)
Discussion started by: fretagi
8 Replies

2. Shell Programming and Scripting

Print one's place for 1 to N times, ksh Perl whatever?

Hello all, I would like to create a for loop or whatever is quick that will print the one’s place of a number for 1-N times say for example a printed page formatting is 132 characters wide, I would like a single line 123456789012345678901234567890... ...012 That is 132 characters long. I... (11 Replies)
Discussion started by: KmJohnson
11 Replies

3. Shell Programming and Scripting

Problem with << redirect - Please help!

I have a script to send an email like below. Problem is, the if ..fi block is not getting executed, and is coming as a part of the email body. Can anyone take a look at this? :confused: Log file shows this: SEND_MAIL.prog: line 64: : command not found echo "Input Parameters" echo... (11 Replies)
Discussion started by: mansmaan
11 Replies

4. Programming

Problem with implementing the times() function in C (struct tms times return zero/negative values)

Hello, i'm trying to implement the times() function and i'm programming in C. I'm using the "struct tms" structure which consists of the fields: The tms_utime structure member is the CPU time charged for the execution of user instructions of the calling process. The tms_stime structure... (1 Reply)
Discussion started by: g_p
1 Replies

5. Shell Programming and Scripting

Redirect Problem

Hi, I have perl script which is calling an external command using "system()" with argument. But i am not able to capture the output.Even tried with backtick also with no luck. . . $number=<>; system ("cmd $number >output.txt"); (2 Replies)
Discussion started by: rasingraj
2 Replies

6. Shell Programming and Scripting

KSH - mailx - Redirect the undelivered mail

Hi, I need to create one KSH which will send mail to set of recipients using "mailx" command like below. mailx -s "Test mail" "test@yahoo.com, test@gmail.com" <$output.txt The recipients are in different domains (like yahoo, gmail, etc.). My requirement is, if any mail is undelivered,... (1 Reply)
Discussion started by: Matrix2682
1 Replies

7. Solaris

Cron redirect problem

Hello all, I have a script that I am trying to execute and redirect the output to a file, but I have trouble in redirection. The cron job is running properly as I see it in the mail. This is what I am doing In crontab file, 0 4 * * * somescript.sh > /some_location/`date '+%m%d%y_%H%M'`.log... (9 Replies)
Discussion started by: grajp002
9 Replies

8. Shell Programming and Scripting

Ksh riddle: interpret variable two times?

exam is a ksh script. In command line I enter: exam 3 param_2 param_3 param_4. In exam how can I get the value of the parameter which position is specified by the first argument. Simply doing this DOES NOT work: offset=$1 value=$$offset can you figure out any possible way to interpret a... (5 Replies)
Discussion started by: i27oak
5 Replies

9. Shell Programming and Scripting

Redirect within ksh

I am using ksh on an AIX box. I would like to redirect the stdout and stderr to a file but also show them on the terminal. Is this possible? I have tried tee within my file without success. This is the code I have so far exec > imp.log 2>&1 | tee exec 1>&1 I am new to shell scripting, so... (3 Replies)
Discussion started by: podzach
3 Replies

10. Shell Programming and Scripting

Redirect Problem

I am using the time command in a script however the output of the time command will display on my screen but not my output file. Any Ideas on how to fix this? > cat test.sh ############################# #!/usr/bin/sh for COMMAND in pwd do time ${COMMAND} done | sed "s/^/ ... (4 Replies)
Discussion started by: 2dumb
4 Replies
Login or Register to Ask a Question