Bash wget.sh:第124行:语法错误:文件意外结束

Bash wget.sh:第124行:语法错误:文件意外结束,bash,Bash,我有一个我无法解决的大问题。我正在为我的公司编写一个应用程序,您可以看到我的代码由两个bash函数组成。 当我尝试编译时,每次都会出现相同的错误:wget.sh:line 124:语法错误:意外的文件结尾n wget.sh是我的文件。我也不知道为什么,我搜索了很多,但这似乎不是一个真正的语法错误,就像我在aif之后忘记了afi。此外,我看了我的文件,在123之后没有其他行。。。 请帮我解决这个问题 #!/bin/bash #----------------------------------

我有一个我无法解决的大问题。我正在为我的公司编写一个应用程序,您可以看到我的代码由两个bash函数组成。 当我尝试编译时,每次都会出现相同的错误:
wget.sh:line 124:语法错误:意外的文件结尾
n wget.sh是我的文件。我也不知道为什么,我搜索了很多,但这似乎不是一个真正的语法错误,就像我在a
if
之后忘记了a
fi
。此外,我看了我的文件,在123之后没有其他行。。。 请帮我解决这个问题

#!/bin/bash


#----------------------------------------------------ApplicationTaxa----------------------------------------------------------
#------------------------------------------------Créateur:Axel Bonnafoux-------------------------------------------------------


#Projet conditions : Avoir le fichier build.Xml dans le dossier pour pouvoir éxecuter le code Java.



# ---------------------------------------------Projet partie 1 : Concaténation (bash)-------------------------------------------- 


Annee=$(date +%Y)
Mois2=$(date +%m)
Mot="init"
Mot2="maj"
Mot3="Facture"

# Creer un dossier Année
if [ ! -d taxa/$Annee  ]
then 
mkdir -p taxa/$Annee
fi
我在没有函数的情况下运行它,它实际上正在工作!帮我知道为什么

 #Fonction concat
 #Concatene les fichiers client récupérés sur serveur ftp
 Concat()
 {
 for Month in $F
 do
    # Créer un dossier Mois
 Mois=$(echo $FILES |cut -d '/' -f4 )
 mkdir -p taxa/$Annee/$Mois 

 # Parcour les fichiers disponibles et les concatene par Mois par client                            
 for Day in $Month'/*'
 do
    for file in $Day'/*'
    do
        filename1=$(echo $file |cut -d '/' -f6 )
        filename2=$(echo $filename1|cut -d '-' -f1|cut -d '_' -f1)

        # Si le fichier n'existe pas, on le créer et on copie son contenu
        if [ ! -e taxa/$Annee/$Mois/$filename2.csv ]
        then
            touch taxa/$Annee/$Mois/$filename2.csv
            cat  $file >> taxa/$Annee/$Mois/$filename2.csv

        # Concatene le nouveau fichier client avec l'ancien
        else 
            cat  $file |sed '1d' >> taxa/$Annee/$Mois/$filename2.csv
        fi
    done
done
done}   




#-----------------------------------------Projet partie 2 : Traitement des données (bash&&Java)------------------------------------------

#Fonction traitement
#Execute la partie javascript pour chaque fichier, somme les coûts et le temps passé des appels
Traitement()
{
for FILES2 in $F2
do 
#Récupération du Mois courant
Mois=$(echo $FILES2 |cut -d '/' -f4 )
for D in $FILES2'/*'
do
    #Création d'un fichier Excel par client
    filename1=$(echo $D |cut -d '/' -f6 )
    filename2=$(echo $filename1|cut -d '-' -f1|cut -d '_' -f1)
    touch taxa/$Annee/$Mois/$filename2.xls
    java -classpath Taxa2 WriteMatriceFG taxa/$Annee/$Mois/$filename2.csv taxa/$Annee/$Mois/$filename2.xls

    #Initialisation d'un tableau de Correspondance à remplir plus tard manuellement
    #Il contient les forfait et prix horaires pour chaque client
    touch TableauCorrespondance_$Mois.xls
    touch TableauCorrespondance_$Mois_2.xls
    java -classpath Taxa2 WriteMatricePrix     TableauCorrespondance_$Mois_2.xls filename2
    cat TableauCorrespondance_$Mois_2.xls >> TableauCorrespondance_$Mois
    rm TableauCorrespondance_$Mois_2.xls

    #Verifie que le nombre de ligne est correct et si le fichier est complet ( qu'il n'y ai pas de trou en somme)
    NF = $(ls *csv  | wc -l)
    nbligne=$(wc -l TableauCorrespondance_$Mois_2.xls|cut -d ' ' -f1)
    Res=java -classpath Taxa2 verification TableauCorrespondance_$Mois.xls
    if [$NF=$((nbligne*3)) && Res]
    then
        #Enfin, on calcule la facture que le client doit régler en fonction du tableau de correspondance qui doit être remplit.         
        java -classpath Taxa2 MatriceTreatment filename2.xls TableauCorrespondance_$Mois.xls
    else
        echo "votre tableau de correspondance nest pas complet"
    fi
done
done}


# récupère les données du serveur ftp si l'on a rien (avec l'option n), récupère seulement les données du mois avec l'option maj et traite seulement les données avec toutes les autres options
if  [ $1 = "$mot" ]     
then
wget -m --ftp-user=********* --ftp-password=********* ftp://ftp-openvno.alphalink.fr/valo/$Annee
F=ftp-openvno.alphalink.fr/valo/$Annee'/*'
Concat
else 
if [ -d taxa/$Annee/$Mois2 ] && [ $1 = "$Mot2" ]
then
    rm -r taxa/$Annee/$Mois2
    wget -m --ftp-user=*********** --ftp-password=******** ftp://ftp-openvno.alphalink.fr/valo/$Annee/$Mois2





F=ftp-openvno.alphalink.fr/valo/$Annee'/*'
    Concat
else 
    F2=taxa/$Annee'/*'
    Traitement
fi
fi
#supprime les fichiers téléchargés devenu obsolète
rm -r ftp-openvno.alphalink.fr
exit 0

这很可能是由于脚本中的任何语句关闭错误造成的。如评论中所述,您可以粘贴脚本以获得一些有用的报告。

您的问题中有很多代码,其中大部分可能与您的问题无关。如果您可以缩短长度并向我们提供答案,那么可能会更容易识别问题。请运行您的代码并修复它报告的问题,如
done}
(您看到的错误原因)上的右括号不正确以及
[
在一个
if
语句和大量其他建议中嘿!我找到了答案,多亏了shellsheck.net。要在shell中实现一个强大的功能,它需要加上“{”在新的一行!非常感谢在StackOverflowHey上发布之前请将代码中的注释翻译成英语!我在shellsheck.net上找到了答案。要在shell中发挥出色的功能,它需要在新的一行上添加“{”!非常感谢