Ich habe eine Zuweisung, wo ich die Anzahl der Wörter in jeder .c .cc und .h Datei zählen muss. Das Problem ist, es zeigt weiterhin den Syntaxfehler in Zeile 8 und 10 bei oder nahe {Dies ist kein fertiges Skript! Es könnte einige andere Probleme haben, aber ich brauchte nur Hilfe mit dem Syntaxfehler!Syntaxfehler bei oder nahe {
awk 'BEGIN {FS=" ";drb=0;valt=0;}
{if (valt == 0){
for(i=1; i<=NF; i++)
drb++;
valt++;
}
else{
FNR==1{ printf "File name: %s,Word count: %d\n",FILENAME, drb;drb=0;}
for(i=1;i<=NF;i++)
drb++;}}
END {printf "File name: %s,Word count: %d",FILENAME,drb }' `find $1 -name '*.c' -o -name '*.cc' -o -name '*.h'`
Dort liegt ein Syntaxfehler vor. Bedenken Sie, dass Sie eine 'if/else'-Anweisung haben. Innerhalb des "else" -Blocks haben Sie einen Ausdruck 'FNR == 1'. Wenn das eine Bedingung ist, sollte es nicht auch eine "if" Aussage haben? Wolltest du es außerhalb des BEGIN-Blocks ablegen? – kojiro
Die erste Antwort zu akzeptieren, ist normalerweise eine schlechte Idee. Denken Sie darüber nach - angesichts der vielen Menschen, die diese Website nutzen, welche Chancen haben Sie, dass die erste Antwort, die Sie bekommen, tatsächlich die beste oder sogar richtig ist? Nachdem Sie eine Antwort akzeptiert haben, werden sich viel weniger Leute darum kümmern, Ihre Frage zu lesen, um Ihnen zu helfen. Gib es ein paar Stunden, nachdem du eine Frage gestellt hast, bevor du eine Antwort akzeptierst. Editiere auch dein Skript, um ein [mcve] einzuschließen, da es mit deinem Skript mehr Probleme gibt als ein Syntaxfehler und die Leute hier könnten dir bei allem helfen, wenn wir genau wissen, was du zu tun versuchst. –
Wenn Sie nicht awk verwenden müssen, können Sie immer diese 'wc -w Datei file2 ...' – 123