9

次のスクリプトの場合

インストール.csh:

#!/bin/csh -f
tar -zxf Python-3.1.1.tgz
cd Python-3.1.1
。/構成、設定
作る
インストールする
CD ..
rm -rf Python-3.1.1

使用目的:

./install.csh |& tee install.log

ユーザーにリダイレクトを要求せずに install.log と出力をコンソールに表示するようにスクリプトを変更するにはどうすればよいですか?

4

3 に答える 3

6

いくつかの簡単な解決策:

解決策 1: 個別にログに記録するすべての行を-aティーにし、ティーのスイッチを使用して追加します

#!/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: 2 つ目のスクリプトを追加します。たとえば、現在の install.csh の名前を install_commands に変更してから、新しい install.csh スクリプトを追加します。

#!/bin/csh -f 
/bin/csh install_commands |& tee install.log
于 2009-12-04T20:34:05.830 に答える
3

こんばんは

csh から bash や zsh などに移行することを強くお勧めします。

csh では stdio 操作はできません。「有害と見なされる csh プログラミング」を読んでください。このトピックに関するエレガントな論文。

申し訳ありませんが、それは直接的な答えではありませんが、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

以前のステップで問題が発生した場合に、後のフェーズからの完了しないかなり役に立たないエラー メッセージのスタックではなく、エラーが明らかになるまでログ ファイルに含まれるように、もう少しチェックとレポートを追加しました。とりあえず。

乾杯、

于 2009-12-04T20:30:24.153 に答える
0

サブシェルで実行し、そのすべての出力をリダイレクトできます。これが 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
) |& tee install.log
于 2010-11-04T18:07:56.483 に答える