For the following script
install.csh:
#!/bin/csh -f tar -zxf Python-3.1.1.tgz cd Python-3.1.1 ./configure make make install cd .. rm -rf Python-3.1.1
Intended use:
./install.csh |& tee install.log
How can I change the script so that I still get a install.log and the output on console without asking the user to do the redirecting?
Some simple solutions:
Solution 1: tee every line you want to log independently, make use of
-a
switch of tee to appendSolution 2: Add a second script. For example, rename current install.csh to install_commands, then add a new install.csh script:
You can run it in a subshell and redirect all the output of that. Don't remember if this works in csh, it has been a long, long time since I used that.
G'day,
I highly recommend moving away from csh towards something like bash or zsh.
stdio manipulation is not possible in csh. Have a read of "csh programming considered harmful". An elegant treatise on this topic.
Sorry it's not a direct answer but you'll find that you'll keep banging your head against the constraints of csh the longer you stick with it.
A lot of csh syntax is already available in bash so your learning curve won't be too steep.
Here's a quick suggestion for the same thing written in bash. It's not elegant though.
I've added a bit more checking and reporting so that if there's a problem in an earlier step the log file will just contain up until the error was uncovered rather than a stack of pretty useless error messages from the later phases that wouldn't complete anyway.
cheers,