G'day,
I wysoce zaleca odejście od csh do czegoś podobnego bash czy zsh.
Obsługa stdio nie jest możliwa w csh. Przeczytaj artykuł "csh programming considered harmful". Elegancki traktat na ten temat.
Niestety, nie jest to bezpośrednia odpowiedź, ale przekonasz się, że będziesz walić w głowę o ograniczenia csh, im dłużej będziesz go trzymać.
Wiele składni csh jest już dostępnych w bash, więc krzywa uczenia się nie będzie zbyt stroma.
Oto krótka propozycja dla tej samej rzeczy napisanej w bashu. To nie jest eleganckie.
#!/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
Dodałam nieco więcej kontroli i raportowania tak, że jeśli jest jakiś problem we wcześniejszym etapie plik dziennika będzie po prostu zawierać aż błąd został otwarty zamiast stosu całkiem niepotrzebnych komunikatów o błędach od późniejsze fazy, które i tak by się nie zakończyły.
okrzyki,
Dzięki. Pomyślałem, że może istnieć inna sztuczka, której nie znam prowadząc do eleganckiego rozwiązania –
Oooh. Dobre wezwanie do podzielenia tego na dwa skrypty +1 Wciąż nie sądzisz, że powinieneś trzymać się csh! (-: –