Zitieren meiner Antwort auf eine ähnliche Frage auf Ask Ubuntu:
Funktioniert in bash
sind im Wesentlichen zusammengesetzte Befehle (oder Codeblöcke). Ab man bash
:
Compound Commands
A compound command is one of the following:
...
{ list; }
list is simply executed in the current shell environment. list
must be terminated with a newline or semicolon. This is known
as a group command.
...
Shell Function Definitions
A shell function is an object that is called like a simple command and
executes a compound command with a new set of positional parameters.
... [C]ommand is usually a list of commands between { and }, but
may be any command listed under Compound Commands above.
Es wird kein Grund angegeben, es ist nur die Syntax.
Versuchen Sie es mit einem Semikolon nach wc -l
:
numresults(){ ls "$1"/RealignerTargetCreator | wc -l; }
Verwenden Sie nicht ls | wc -l
da es zu falschen Ergebnissen führen kann, wenn Dateinamen Zeilenumbrüche enthalten. Sie können stattdessen diese Funktion verwenden:
numresults() { find "$1" -mindepth 1 -printf '.' | wc -c; }