2011-03-30 6 views
8
#!/bin/sh 
while true ; do 
echo "WTF" 
done 

Esto está dando un error de sintaxis: error de sintaxis: se esperaba el final de archivo (esperando "do")error de secuencia de comandos shell espera "hacer"

También probé:

#!/bin/sh 
while : 
do 
echo "WTF" 
done 
+0

Ambos funcionan bien para mí. Intenta ingresar a través de vi, ya que puede terminar siendo una codificación de caracteres/avances de línea en tu script. – dotalchemy

+0

Extrañamente tu primer intento funciona, encuentra para mí. Tal vez tu bash tiene un filtro de blasfemias :). ¿Alguna otra información que pueda brindarnos cuando falle la primera? –

Respuesta

15

Sospecho finales de línea.

Probar:

hexdump -C yourscript.sh 

Y buscar 0d 0a secuencias. Puede despojar \r (0d) con el comando tr:

cat yourscript.sh | tr -d '\r' >> yournewscript.sh 
+1

Veo secuencias 0d 0a pero su línea para eliminarlas con el comando tr no funcionó para mí. Utilicé vi después de que no funcionó y está funcionando bien ahora! gracias – Jordan

+0

No hay problema. Si está cargando el script en su cuadro de linux/unix a través de FTP, puede seleccionar el formato ascii/texto, y FTP manejará la conversión de final de línea por usted. Si, por otro lado, está creando el archivo de alguna otra forma, tr es una buena herramienta para quitar los caracteres no deseados. –

1

Dar este un intento:

#!/bin/sh 
while [ true ] 
do 
    echo "WTF" 
done 

Por favor, preste especial atención a los espacios en la línea 'mientras que [verdadero]'

+0

Ah, whoops ... me gana. ;) – jwir3

Cuestiones relacionadas