Как перенаправить stdout и stderr из csh сценария

IDE: NetBeans
Book: Agile Web Development With Rails
Installation: Instant Rails
8
задан Juha Syrjälä 4 December 2009 в 20:18
поделиться

2 ответа

Некоторые простые решения:

Решение 1: tee каждую строку, которую вы хотите регистрировать независимо, используйте переключатель -a в строке tee для добавления

#!/bin/csh -f    
tar -zxf Python-3.1.1.tgz |& tee -a install.log
cd Python-3.1.1 |& tee -a install.log
./configure |& tee -a install.log
make |& tee -a install.log
make install |& tee -a install.log
cd .. |& tee -a install.log
rm -rf Python-3.1.1 |& tee -a install.log

Решение 2: Добавьте второй сценарий. Например, переименуйте текущий install.csh в install_commands, затем добавьте новый скрипт install.csh:

#!/bin/csh -f 
/bin/csh install_commands |& tee install.log
7
ответ дан 5 December 2019 в 17:38
поделиться

Добрый день,

Я настоятельно рекомендую перейти от csh к чему-то вроде bash или zsh.

В csh невозможно манипулировать stdio. Прочтите статью « Программирование csh считается вредоносным ». Элегантный трактат по этой теме.

Извините, это не прямой ответ, но вы обнаружите, что будете биться головой об ограничениях csh, чем дольше придерживаетесь этого.

Много синтаксиса csh является уже доступен в bash, так что ваша кривая обучения не будет слишком крутой.

Вот быстрое предложение для того же самого, написанного на bash. Хотя это не изящно.

#!/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

Я добавил немного больше проверок и отчетов, чтобы, если есть,

3
ответ дан 5 December 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: