Log Files from bash script output

2

I have a script that runs (this works fine).

I'd like to produce logfiles from its output and still show it on screen. I have this command that creates three files from this blog:

((./fk.sh 2>&1 1>&3 | tee errors.log) 3>&1 1>&2 | tee output.log) 2>&1 | tee final.log

This does exactly what I want it to.

My only issue is that I create files in my script and copy them somewhere, and I'd like to copy these logfiles there too, which I can't do whilst this script is running. I also wanted to make it easier for any user to run my script, so I created another script to run this script. According to this post (see last post) I can put a . before the script name and I can use variables assigned in my called script from the first script if I use them in the first.

It doesn't seem to work though and I can't figure out why or find alternative methods.

Can anyone help?

neildeadman

Posted 2011-06-21T11:17:08.627

Reputation: 407

You could define an environment variable that points to the directory you want, then let the script and the logs write there. Additionally, maybe wrap the line you're currently using into another script. – slhck – 2011-06-21T12:10:33.267

I am assigning var OUTPUT in first script, but when set in called script first script only sees original value... – neildeadman – 2011-06-21T13:27:49.620

Answers

0

Please read the solution presented in the following link:
logging blocks of code to log files in bash @ stackoverflow.com

Dor

Posted 2011-06-21T11:17:08.627

Reputation: 196

0

I've discovered that by using exec I can achieve what I wanted with out the need for a second script, like so:

#!/bin/bash
exec 1>&2-
cmd1
cmd2

Thought it worth posting in case anyone happens upon this question!

neildeadman

Posted 2011-06-21T11:17:08.627

Reputation: 407

This isn't the exact line I used, as I am still working on it... – neildeadman – 2011-06-28T08:01:14.330