SHELL : syntax error near unexpected token...

jax54000 Messages postés 44 Statut Membre -  
jax54000 Messages postés 44 Statut Membre -
Bonjour,

Lorsque je souhaite interpréter le code ci dessous, j'obtiens le message suivant : syntax error near unexpected token 'else' à la ligne qui correspond à l'avant dernier "else".

Ca fait un moment que je cherche, je ne trouve pas...

Voici le code :

############################################################

renameFiles()
{
local pDirectory=${kNullString}
local pSequenceToReplace=${kNullString}
local pNewSequence=${kNullString}
local pMinDepth=${kNullInteger}
local pMaxDepth=${kNullInteger}

local lListWithExtensions=${kNullString}
local lListWithPaths=${kNullString}
local lLine=${kNullString}
local lOldFile=${kNullString}
local lOldFileName=${kNullString}
local lNewFile=${kNullString}
local lNewFileName=${kNullString}
local lReturnCode=${kNoError}

local lNameOfTempFile=${kNullString}
local lTempFile=${kNullString}

begin ${FUNCNAME} $*


#
# Five parameters are required
#
if [ $# -ge 5 ]
then

pDirectory="$1"
pSequenceToReplace="$2"
pNewSequence="$3"
pMinDepth=$4
pMaxDepth=$5

if [ -d "${pDirectory}" ]
then

lNameOfTempFile="tempFileOf${FUNCNAME}Function.txt"
lTempFile=./${lNameOfTempFile}

#
# List files with the good sequence and rename them
#
lListWithExtensions=${kYes}
lListWithPaths=${kYes}

listFiles "${pDirectory}" "${pSequenceToReplace}" ${lListWithExtensions} ${lListWithPaths} ${pMinDepth} ${pMaxDepth} ${lTempFile}

if [ $? -eq ${kNoError}]
then
while read lLine
do
lOldFile="${Line}"
getFileName "${Line}"
lOldFileName="${gResultOfGetFileName}"

getFilePath "${Line}"
lFilePath="${gResultOfGetFilePath}"

lNewFileName=$(echo "${lOldFileName}" | sed 's/"${pSequenceToReplace}"/"${pNewSequence}"/g')
lNewFile="${lFilePath}/${lNewFileName}"

mv "${lOldFile}" "${lNewFile}"
done < ${lTempFile}

else if [ $? -eq ${kNoFile}]
then
raiseInformation ${FUNCNAME} "No file has been found."
else
raiseError ${FUNCNAME} "list of files may be wrong."
lReturnCode=${kError}
fi

#
# Remove temporary file
#
rm -f ${lTempFile}
else
raiseError ${FUNCNAME} "directory specified does not exist (or a file is specified)"
lReturnCode=${kError}
fi
else
raiseError ${FUNCNAME} "needs 5 parameters"
lReturnCode=${kError}
fi
end ${FUNCNAME}
}

############################################################

Comme je me suis dis que Jipicy allait être probablement dans le coin...

Merci d'avance

A+
A voir également:

3 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Si tu pouvais indenter ton code (sers-toi de la balise "code" pour ça) et le commenter surtout, se serait un peu plus lisible, parce que là, à vue de nez, y'a l'air d'avoir quelques incohérences dans la syntaxe "if...then...elif...then...elif...then...else...fi" et dans les espaces dans les tests "[ ... ]" (il faut un espace après le 1er crochet et avant le 2nd).

Affiche aussi le reste du script, qu'on sache à quoi correspondent les "codes retour" !?
0
thorn
 
salut,
en effet essaie de remplacer else if par elif dans
" else if [ $? -eq ${kNoFile}]
then..."
je crois que tu crées un if en trop et l'interpreteur te reclame un fi
0
jax54000 Messages postés 44 Statut Membre 1
 
Jipicy désolé pour l'indentation je n'avais pas vu... copier coller

alors effectivement c'était le problème du else if à tranformer en elif plus je pense un problème d'espace avant le crochet fermant de la cnodition.

Merci à vous, yeux de lynx.

A+
0