Citando mi respuesta para una pregunta similar en Ask Ubuntu:
Funciones en bash
se denominan esencialmente comandos compuestos (o bloques de código). Desde 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.
No se da ninguna razón, es solo la sintaxis.
Prueba con un punto y coma después de wc -l
:
numresults(){ ls "$1"/RealignerTargetCreator | wc -l; }
No use ls | wc -l
ya que puede darte resultados erróneos si los nombres de los archivos tienen líneas nuevas. Puede usar esta función en su lugar:
numresults() { find "$1" -mindepth 1 -printf '.' | wc -c; }