command no encontrado y error de syntax cerca de token inesperado

Tengo este script para dividir un file de más de 100000 o incluso más en 50000 líneas.

desc() { echo $1 $2|awk '{d=$1;} BEGIN {a=1;b=0} { f=d"0"a; while ((getline x<d)>0) { print x>>f".txt" if (b++>=50000) { close(f);b=0;a++;f=(a<10)?d"0"a:f=d""a } } } END {print "Terminado ... ! "}' } if [ -f $1 ]; then desc $1 $2 fi 

Cuando lo ejecuto recibí este post de error:

 sh-3.2$ parte.sh pa.txt : command not found '/parte.sh: line 2: syntax error near unexpected token ` '/parte.sh: line 2: `desc() sh-3.2$ 

¿Alguien puede ayudar a resolverlo?

El primer post de error es : command not found lugar del formatting habitual bash: SOMECOMMAND: command not found . Esto indica que algo sospechoso está sucediendo.

Lo que sucede es que su script contiene caracteres de retorno de carro al final de algunas líneas. En Windows, una nueva línea se representa mediante la secuencia de dos caracteres CR, LF (retorno de carro seguido de avance de línea). En todos los sabores de Unix, una línea nueva está representada solo por el personaje LF. Bash ve una línea como SOMECOMMAND␍ were es un personaje CR, que analiza como una llamada al command llamado SOMECOMMAND␍ . Como no existe dicho command, bash muestra su post de error habitual.

En el terminal, el carácter de control CR mueve el cursor de nuevo al comienzo de la línea. Entonces, el rest del post sobrescribe el nombre del command.

La solución no es utilizar un editor de Windows para editar scripts de shell o configurar su editor para que no ponga caracteres CR en scripts de shell.

Para convertir un file existente en su lugar en Linux o Cygwin de terminaciones de línea de Windows a terminaciones de línea Unix, puede usar el siguiente command. Funciona incluso si el file original tiene terminaciones de línea combinadas de Windows y Unix.

 sed -i -e 's/\r$//' parte.sh 

Use split(1) , por ejemplo, split --lines=50000 pa.txt (o configure su propio prefijo). Probablemente mucho, mucho más rápido que el pobre awk .

 DESCRIPTION Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT is -, read standard input. 

Si se trata de un script sh, parece que el error está en la definición de su function.

desc()
{

Debiera ser:

function desc {

Ejemplo de guión:

#!/bin/bash
function desc {
echo Hi
}
echo Starting
desc
echo Ending