2011-10-10 4 views
0

Je reçois une erreur de syntaxe sur la ligne 43 lors de la compilation du code de script Unix. Ce code est de rechercher dans un dossier de fichier texte et de faire correspondre n'importe quel mot du fichier input.txt. Code terminer n'a toujours pas encore siligne 43: erreur de syntaxe: fin de fichier inattendue

#!/bin/bash 

findkeyword() { 
    file="$1" 
    keyword="$2"  
    value="$3" 
    int count = 0 
    cat $file | awk '{ 
    while read line 
     do 
      for (ii=1;ii<=NF;ii++) { 
       if ($ii == $keyword) 
        count++ 
      fi 
      } 
     done 
    }' 
    echo "Profile: " $file 
    scorefile $value $count 

scorefile() { 
    value="$1" 
    count="$2" 

    echo "Score: " $value*$count 

} 

cat input.txt | awk '{ 
    while read line 
     do 
      keyword=$1 
      value=$2 

      for xx in `ls submissions/*` 
      do 
       filename=$xx 
       findkeyword $filename $keyword $value 
      done 
     done 
}' 

Répondre

0
#!/bin/bash 

findkeyword() { 
    file="$1" 
    keyword="$2"  
    value="$3" 
    int count = 0 
    while read line; do 
    for word in $line; do 
     if [[ $word = $keyword ]]; then 
      $((count++)) 
     fi 
    done 
    done <$file 
    echo "Profile: " $file 
    scorefile $value $count 
} # missing closing brace here 

scorefile() { 
    value="$1" 
    count="$2" 

    echo "Score: " $(($value*$count)) # Math evaluation broken 

} 

while read line 
    do 
     keyword=$1 
     value=$2 

     for xx in `ls submissions/*` 
     do 
      filename=$xx 
      findkeyword $filename $keyword $value 
     done 
    done<input.txt 
+0

Je viens d'essayer et me donner une erreur de syntaxe et à lui mettre fin – user968623

+0

vous avez un munge horrible bash et awk dans le script, c'est le problème fondamental. – Petesh

+1

Ce bit: fichier cat $ | awk '{ while read ligne faire pour (ii = 1; ii <= NF; ii ++) { if ($ ii == mot-clé $) count ++ fi } fait } souffre également de la même syntaxe bash/awk mélangée – Petesh

Questions connexes