SHELL : syntax error near unexpected token...
jax54000
Messages postés
44
Statut
Membre
-
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+
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+
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
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" !?
-
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 -
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+