Sponsored Content
Top Forums Shell Programming and Scripting File descriptors, redirecting output, and stdout Post 302675703 by Corona688 on Monday 23rd of July 2012 12:07:51 PM
Old 07-23-2012
Instead of redirecting to 3 and 4 and using 'print -u4', you could've redirected stdout and stderr themselves. with 'exec 1>' and 'exec 2>' respectively, and not modified your print commands at all.

Of course, since you seem to wish to preserve stdout/stderr now, it'd be better to keep stdout/err as is.

A redirection can't cause something to print twice. If you want to print twice, you have to print twice. You can make a function to do so, however, simplifying things for you.

Code:
function output
{
        print "$@" >&3
        [ ! -z "$DEBUG" ] && print "$@"
}

function debug
{
        print "$@" >&4
        [ ! -z "$DEBUG" ] && print "$@" >&2
}

If you want to see the output appear on the screen, run it like DEBUG=1 ./myscript

or export the DEBUG variable in your shell or profile.

Last edited by Corona688; 07-23-2012 at 01:13 PM..
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Linux

vgscan produces no output using file descriptors on Oracle Enterprise Linux.

I wrote a simple program which will create a child process to execute a command and the output will be redirected to the file. Please have a look at the following code -> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <fcntl.h> void execute(char **argv) { ... (0 Replies)
Discussion started by: sandiworld
0 Replies

2. Shell Programming and Scripting

Redirecting STDERR message to STDOUT & file at same time

Friends I have to redirect STDERR messages both to screen and also capture the same in a file. 2 > &1 | tee file works but it also displays the non error messages to file, while i only need error messages. Can anyone help?? (10 Replies)
Discussion started by: vikashtulsiyan
10 Replies

3. Shell Programming and Scripting

implicitly redirecting stdout to a file

Is there a way to redirect all stdout to a file implicitly - like defining stdout=/home/me/process.log - so that all "echo" commands in several scripts/subscripts are written to that file; instead of having to edit all scripts to redirect the "echo" (e.g. echo 'This is a test ' >>... (1 Reply)
Discussion started by: ALTRUNVRSOFLN
1 Replies

4. Shell Programming and Scripting

Redirecting part of output to stdout

Hi, I am trying to execute a command like this: find ./ -name "*.gz" -exec sh -c 'zcat {} | awk -f parse.awk' \; >> output If I want to print the filename, i generally use the -print argument to the find command but when I am redirecting the output to a file, how can I print just the... (2 Replies)
Discussion started by: Legend986
2 Replies

5. UNIX for Dummies Questions & Answers

Redirecting several outputs to /dev/stdout

I have an executable that, depending on its input, outputs to either one file or several. It usually prints nothing on screen. The usual way to call this program is to specify an input and output filenames, like this: ./executable.exe -i inputfile -o outputfileIt will then try to use the output... (1 Reply)
Discussion started by: aplaydoc
1 Replies

6. Shell Programming and Scripting

Preserve output order when redirecting stdout and stderr

Hi, I already searched through the forum and tried to find a answer for my problem but I didn't found a full working solution, thats way I start this new thread and hope, some can help out. I wonder that I'm not able to find a working solution for the following scenario: Working in bash I... (8 Replies)
Discussion started by: Boemm
8 Replies

7. Shell Programming and Scripting

Redirecting stdout problem

I have a simple bash script that prints sth every 5 seconds. What I do is the following. I redirect the output of the script to a file, tail the file and see that it works and then from another console I delete the file where the output is redirected to. Even though I have deleted the file, the... (2 Replies)
Discussion started by: igurov
2 Replies

8. Shell Programming and Scripting

Redirecting stdout continously to a file

I have a C program that continously outputs info to stdout. The problem is that I am redirecting the stdout and stderr to a file and stdout is written at the end of the problem rather than continously to the file. This could be a problem if for example the program is killed and the stdout output is... (3 Replies)
Discussion started by: igurov
3 Replies

9. Shell Programming and Scripting

Redirecting STDERR to file and screen, STDOUT only to file

I have to redirect STDERR messages both to screen and also capture the same in a file but STDOUT only to the same file. I have searched in this formum for a solution, but something like srcipt 3>&1 >&2 2>&3 3>&- | tee errs doesn't work for me... Has anyone an idea??? (18 Replies)
Discussion started by: thuranga
18 Replies

10. Shell Programming and Scripting

Redirecting stdout output to whiptail menu box

As a result of whiptail menu option I am getting a data from a file. Naturally it is output to terminal as stdour. I like to redirect the output back to the menu. It can be done with single input of line of text , see attached. I just cannot see where or how the sample... (0 Replies)
Discussion started by: annacreek
0 Replies
DPIPE(1)						      General Commands Manual							  DPIPE(1)

NAME
dpipe - bi-directional pipe command SYNOPSIS
dpipe [ command [ args ] ] = [ command [ args ] ] dpipe [ command [ args ] ] = [ command [ args ] ] [ = [ command [ args ] ] ] ... DESCRIPTION
dpipe is a general tool to run two commands diverting the standard output of the first command into the standard input of the second and vice-versa. It is the bi-directional extension of the | (pipe) syntax used by all the shells. The = has been chosen as a metaphor of two parallel communication lines between the commands. It is also possible to concatenate several tools. Intermediate programs communicate using standard input and standard output with the preceding tool and alternate standard input and output (respectively file descriptors number 3 and 4) towards the following tool. If an intermediate tool should process only the data flowing in one direction use { or } as suffix for the preceding = and prefix of the following one. This tool has been written as a tool for the Virtual Distributed Ethernet. EXAMPLE
dpipe a = b processes a and b are bidirectionally connected: stdin of a is connected to stdout of b and vice-versa dpipe a = b = c a and b are connected as above. Alternate stdin of b is connected to stdout of c and alternate stdout of b to stdin of c dpipe a =} b }= c This is a cycle of pipes: stdout of a is connected to stdin of b, stdout of b with stdin of c, and stdout of c to stdin of a dpipe a =} b }={ c {= d = e all the notations can be mixed together. this is a -> b -> d -> c and back to a; alternate ports of d are connected to e OPTIONS
no options. NOTICE
Virtual Distributed Ethernet is not related in any way with www.vde.com ("Verband der Elektrotechnik, Elektronik und Informationstechnik" i.e. the German "Association for Electrical, Electronic & Information Technologies"). SEE ALSO
vde_switch(1), vde_plug(1), vde_plug2tap(1), vdeq(1). wirefilter(1). AUTHOR
VDE is a project by Renzo Davoli <renzo@cs.unibo.it>. Virtual Distributed Ethernet December 6, 2006 DPIPE(1)
All times are GMT -4. The time now is 10:43 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy