次のスクリプトの場合
インストール.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 と出力をコンソールに表示するようにスクリプトを変更するにはどうすればよいですか?
いくつかの簡単な解決策:
解決策 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
こんばんは
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
以前のステップで問題が発生した場合に、後のフェーズからの完了しないかなり役に立たないエラー メッセージのスタックではなく、エラーが明らかになるまでログ ファイルに含まれるように、もう少しチェックとレポートを追加しました。とりあえず。
乾杯、
サブシェルで実行し、そのすべての出力をリダイレクトできます。これが 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