10-29-2002
ret val of a command in a pipe which is NOT the last one
hello dear UNIX gurus ;-)
my problem is one of those i would think that many others should also have had it in the past. but i cannot find any thread or other documentation about it.
inside a ksh script i have a pipe like this:
ksh -c "export LIBPATH=$LD_LIBRARY_PATH; ${Cmd} ${Param} 2>&1 | tee -a ${LogFile}"
now i need to return the return value of ${Cmd} to the caller. as everybody knows, the $? gives me the ret val of the tee call, which is not important here. nevetheless i want to use the tee feature here. many this-style pipes can be usefull.
i have tried workarounds with
[[ ! -r ${LogFile} ]] && touch ${LogFile}
tail -f ${LogFile} &
TAILPID=$!
ksh -c "export LIBPATH=$LD_LIBRARY_PATH; ${Cmd} ${Rest} >> ${LogFile} 2>&1"
RET=$?
sleep 5
kill -9 ${TAILPID} > /dev/null 2>&1
exit ${RET}
but i think there must be a better solution, maybe using file descriptors greater than2. but i did not succeed yet :-(
has anybody an idea?
this would be great
thank you all and bye bye
latze
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi All,
I want to create a command that executes a text editor with the most recent file in the current current directory.
So a good start to achieve this is :
ls -lrt | cut -c55- | tail -1
which provides the name of the most recent file in a directory
The problem is to pipe the... (4 Replies)
Discussion started by: anonymous.nico
4 Replies
2. UNIX for Dummies Questions & Answers
current dir :
/home/sales
ls -l
abc.txt 17th aug
bcd .txt 16t oct
-------
------
Total files : 100
if i want to move only those files dated 17 aug into another sub directory /home/sales/texas
how do i pipe the result of 'ls' command to a 'mv' command (1 Reply)
Discussion started by: zomboo
1 Replies
3. Programming
Hi,
I have one shell script which is calling a C executable. That C executable returns a value depending upon operations inside the C code. But how to get that value in the calling shell script?
The syntax of calling the C executable is like --
C_exec <argc no> <argument1> <argument2> etc... (5 Replies)
Discussion started by: k_bijitesh
5 Replies
4. Shell Programming and Scripting
hi
i'm running a shell script that checks the amount of cpu idle either using /usr/bin/vmstat 1 2 or sar 1 2 (on unixware) before i run some tests(if cpu idle greater than 89 I run them).
These tests are run on many platforms, linux(suse, redhat) hp-ux, unixware, aix, solaris, tru64.
... (5 Replies)
Discussion started by: OFFSIHR
5 Replies
5. UNIX for Dummies Questions & Answers
Hi My friends
I have used this command to find files are modified within the past 24 hours
and then many files are shown but I want transfer all these files to special directory by using pipe .
can any one tell me what is the next step ? (11 Replies)
Discussion started by: bintaleb
11 Replies
6. Shell Programming and Scripting
Hi all,
Can someone help me with the following problem.
I am executing the following command:
(search for occurences of 'error' in files that match cl-*.log expression)
> grep -cw -i --max-count=1 'error' cl-*.log
this command outputs:
cl-apache.log:1
cl-apache_error.log:1... (3 Replies)
Discussion started by: epro66
3 Replies
7. Shell Programming and Scripting
Hello,
I try to concatenate a command to execute. Sadly it throws an error.
#!/bin/bash
cd /
cmd="find -name *.txt | awk '{ printf "FILE: "$1; system("less "$1);}' | egrep 'FILE:|$1'"
echo "1."
$($cmd)
echo "2."
$("$cmd")
echo "3."
`$cmd`
echo "4."
`"$cmd"`1.&3. 'find: paths must... (2 Replies)
Discussion started by: daWonderer
2 Replies
8. Shell Programming and Scripting
Single command to ls all the files inside a particular directory hierachy and output this to a file and open this in a vim file so that i can use gf command in vim to browse through all the files inside this hierachy.
eg :
dir1/dir2
and
dir1/dir3
dir2 and dir3 contain the files i need... (7 Replies)
Discussion started by: dll_fpga
7 Replies
9. Shell Programming and Scripting
Hello, sorry if this has been asked before, I couldn't find what I was looking for.
I know how to connect to Oracle and execute stored procedures from a shell script, but what I would like to do is return a value from a table and use it in my script.
For Example, If I had a table Called... (1 Reply)
Discussion started by: mode09
1 Replies
10. Shell Programming and Scripting
Hi all,
I didn't use SED for 20 years and was never an expert. So my current knowledge is about zero. Please be patient with me. I'm neither a native speaker.
I have a huge dictionary file and want the rest of the lines stripped. Everything after (and including) the "/" should be stripped. I... (2 Replies)
Discussion started by: Hinnerk2005
2 Replies
LEARN ABOUT OPENDARWIN
pipe
PIPE(2) BSD System Calls Manual PIPE(2)
NAME
pipe -- create descriptor pair for interprocess communication
SYNOPSIS
#include <unistd.h>
int
pipe(int *fildes);
DESCRIPTION
The pipe() function creates a pipe, which is an object allowing unidirectional data flow, and allocates a pair of file descriptors. The
first descriptor connects to the read end of the pipe, and the second connects to the write end, so that data written to fildes[1] appears on
(i.e., can be read from) fildes[0]. This allows the output of one program to be sent to another program: the source's standard output is set
up to be the write end of the pipe, and the sink's standard input is set up to be the read end of the pipe. The pipe itself persists until
all its associated descriptors are closed.
A pipe whose read or write end has been closed is considered widowed. Writing on such a pipe causes the writing process to receive a SIGPIPE
signal. Widowing a pipe is the only way to deliver end-of-file to a reader: after the reader consumes any buffered data, reading a widowed
pipe returns a zero count.
RETURN VALUES
On successful creation of the pipe, zero is returned. Otherwise, a value of -1 is returned and the variable errno set to indicate the error.
ERRORS
The pipe() call will fail if:
[EMFILE] Too many descriptors are active.
[ENFILE] The system file table is full.
[EFAULT] The fildes buffer is in an invalid area of the process's address space.
SEE ALSO
sh(1), read(2), write(2), fork(2), socketpair(2)
HISTORY
A pipe() function call appeared in Version 6 AT&T UNIX.
4th Berkeley Distribution June 4, 1993 4th Berkeley Distribution