![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Verplaats Command and exit status probleem | visingha | Programmeren en Shell Scripting | 10 | 09-13-2008 09:08 PM |
| Verplaats Command and exit status probleem | visingha | UNIX voor Dummies Questions & Answers | 1 | 09-12-2008 03:14 |
| exit status draait Java CLASSPATH in Unix shell | mmcds | Hoog Niveau Programmering | 2 | 08-02-2007 11:06 PM |
| controle exit status van een shell script | kdipankar | Programmeren en Shell Scripting | 2 | 05-09-2006 02:08 |
| Probleem met exit status | diganta | Programmeren en Shell Scripting | 1 | 09-28-2005 09:34 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
sh recursieve sub-shell exit status probleem
Hoi Ik probeer op te sporen de exit status van een recursieve functie die ik uitgevoerd als een sub-shell. Hieronder heb ik aangeboden een deel van de shell script dat ik lopen ... sorry haar nog een beetje lange adem: -- Code:
#!/bin/sh
addFile()
{
fileName="${1##*/}" # Extract filename from path.
if [ $fileName == "phil" ]
then
return 1 #Kick off error...
else
return 0
fi
}
addCommitFiles()
{
# Traverse to database directory or below
cd "$topDir/$1"
if [ $? != 0 ]
then
echo "topDir error $topDir/$1"
exit 1 # Treat as fatal error.
fi
# List all files/dirs in this directory.
ls | while read i
do
# Check if directory.
if [ -d "$i" ]
then
# Pass in full relative path to topDir.
( addCommitFiles "$1/$i" )
ret1=$? # This is never non-zero???
echo "RET=$ret1 != 1"
if [ $ret1 != 0 ]
then
echo "ERR2???"
exit 1 # Treat as fatal error.
fi
echo "ERR3"
else
echo "${rootDir}/$1/${i}"
addFile "$1/$i"
if [ $? != 0 ]
then
echo "ERR1"
exit 1 # We get this error and would exoect
fi
fi
done
exit 0
}
# Main
usrNam="XXX"
topDir=`pwd`
rootDir="./"
(addCommitFiles "./$usrNam")
if [ $? != 0 ]
then
echo "ERROR"
else
echo "OK"
fi
Ik heb gemaakt de volgende directory structuur in mijn lokale map: -- XXX bestanden xyz dir \u003d YYY bestanden x1, y1, z1 dir \u003d ZZZ bestanden phil x2 y2 Z2 Toen ik de shell-script krijg ik de output: -- .//./ XXX / a .//./ XXX / b .//./ XXX / c .//./ XXX/YYY/x1 .//./ XXX/YYY/y1 .//./ XXX/YYY/z1 .//./ XXX / YYY / ZZZ / phil ERR1 RET \u003d 0! \u003d 1 ERR3 RET \u003d 0! \u003d 1 ERR3 OK Wat ik dont begrijp is waarom ik niet de "ERR2 ???". krijgen Ik krijg ERR1 verricht, omdat addFile geeft 1, maar ik hoopte ERR2 krijgen?? ", Omdat de subschil vervolgens uitgangen met exit 1. Ik ben natuurlijk iets ontbreekt hier en zou dankbaar zijn als iemand kan helpen? Bedankt Laatst bewerkt door Philp; op 01.07.2009 05:58.. Reden: Toegevoegd Code tags |
|
||||
|
Bedankt voor hulp tour
1) Sorry dat ik did'nt weten over de code tags ... Ik heb ze toegevoegd. 2) \u003d\u003d werkt voor mij? Misschien is mijn versie van bash, behalve op beide??? 3) Brilliant! Thankyou "Thre is geen noodzaak voor ls, en het is de oorzaak van uw probleem, aangezien alle elementen van een pijpleiding worden uitgevoerd in subshells." Deze vaste mijn probleem. I dont werkelijk begrijpen waarom, maar ik zal een gelezen. Thank You!! 4) Ik zal herinneren aan $ PWD gebruik in de toekomst. In mijn oorspronkelijke code heb ik niet nodig om de huidige directory weten ... dit was nodig voor deze omgehakt versie. Nogmaals bedankt voor al je hulp! |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|