8
votes

Comment rediriger stdout et stardr du script csh

pour le script suivant

installer.csh: strong> p> xxx pré>

Utilisation prévue: p>

./install.csh |& tee install.log


0 commentaires

3 Réponses :


3
votes

g'day,

i hautement strong> Je vous recommande de m'éloigner de CSH vers quelque chose comme Bash ou ZSH. P>

La manipulation de Stdio n'est pas possible dans csh. Avoir une lecture de " Programmation de la CSH considérée comme nocive ". Un tarification élégant sur ce sujet. P>

Désolé, ce n'est pas une réponse directe, mais vous constaterez que vous allez frapper votre tête contre les contraintes de CSH, plus vous vous en tenez plus longtemps. P> Beaucoup de syntaxe de CSH sont déjà disponibles dans Bash afin que votre courbe d'apprentissage ne soit pas trop raide. P>

Voici une suggestion rapide pour la même chose écrite à Bash. Ce n'est pas élégant cependant. P>

#!/bin/bash
TO_LOGFILE= "| tee -a ./install.log"
tar -zxf Python-3.1.1.tgz 2>&1 ${TO_LOGFILE}
if [ $? -ne 0 ];then
    echo "Untar of Python failed. Exiting..."; exit 5
fi

cd Python-3.1.1 2>&1 ${TO_LOGFILE}
if [ $? -ne 0 ];then
    echo "Can't change into Python dir. Exiting..."; exit 5
fi
echo "============== configure ================"
./configure 2>&1 ${TO_LOGFILE}
if [ $? -ne 0 ];then
    echo "Configure failed. Exiting..."; exit 5
fi
echo "================ make ==================="
make 2>&1 ${TO_LOGFILE}
if [ $? -ne 0 ];then
    echo "Compile of Python failed. Exiting..."; exit 5
fi
echo "================ install ================"
make install 2>&1 ${TO_LOGFILE}
if [ $? -ne 0 ];then
    echo "Install of Python failed. Exiting..."; exit 5
fi

cd ..
rm -rf Python-3.1.1 2>&1 ${TO_LOGFILE}
exit 0


1 commentaires

@Shelly, oups. oublié que vous vouliez dupliquer la console.



6
votes

Certaines solutions simples:

Solution 1: TEE Chaque ligne que vous souhaitez connecter de manière indépendante, utilisez -A code> commutateur de tee à ajouter p> xxx pré>

solution 2: ajoutez un deuxième script. Par exemple, renommez actuellement installer.Csh à installer_commands, Ajoutez ensuite un nouveau script Install.CSH: P>

#!/bin/csh -f 
/bin/csh install_commands |& tee install.log


2 commentaires

Merci. Je pensais qu'il pourrait y avoir une autre astuce que je ne savais pas de mener à une solution élégante.


Oooh. Bon appel à la diviser en deux scripts. +1 Néanmoins, ne pensez pas que vous devriez rester avec CSH! (-:



0
votes

Vous pouvez l'exécuter dans un sous-vase et rediriger toute la sortie de cela. Ne vous souvenez pas si cela fonctionne dans CSH, cela a été long et longtemps depuis que je l'ai utilisé.

#!/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
) |& tee install.log


0 commentaires