Linux/Unix Shell Scripting - linea 10: error sintáctico cerca del elemento inesperado then

   
Vista:

linea 10: error sintáctico cerca del elemento inesperado then

Publicado por Milagros (4 intervenciones) el 28/10/2012 10:45:43
Hola soy nueva en programación shell
Estoy haciendo un script que lista los directorios y los archivos que se encuentran en el directorio actual,si es un archivo debe indicar que tipo es y si es directorio mostrar los archivos que cuelgan de el.
El error es el siguiente linea 10 error sintáctico cerca del elemento inesperado then
llevo toda la mañana intentando ver donde esta el fallo y nada haber si me podéis echar una mano
Gracias de antemano quedo el codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# i es igual los valores listados por ls
 
for i in `ls`; do
 
#si es un fichero mostramos el nombre del fichero
 
	if test -d $i
 
	then
 
	echo "Es directorio: " $i
 
	# j es igual los valores listados por ls de $i	
 
		for j in `ls $i`; do
 
			if test -s $j
 
			then
 
			echo "nombre y tipo de archivo "
 
			file $j
 
			else
 
			echo "Directorio vacio "
 
			fi
 
		done
 
	else
 
	echo "nombre y tipo de archivo "
 
	file $i
 
	fi
 
done
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

linea 10: error sintáctico cerca del elemento inesperado then

Publicado por xve (254 intervenciones) el 28/10/2012 11:00:44
Creo que el problema to tienes en el if, que van entre corchetes...

1
2
3
4
5
6
7
8
9
if [ expresion2 ]
        then
                comandos
        elif [ expresion2 ]
                then
                        comandos
                else
                        comandos
fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

linea 10: error sintáctico cerca del elemento inesperado then

Publicado por Milagros (4 intervenciones) el 28/10/2012 11:06:05
Gracias yo tenia algunos scripts con if test y me funcionaban bien no se porque en este no me deja pero lo he cambiado por corchetes y va perfecto
Muxas graciass ya esta solucionado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

linea 10: error sintáctico cerca del elemento inesperado then

Publicado por Tom (253 intervenciones) el 29/10/2012 11:08:50
El comando test es perfectamente válido, es exactamente igual que usar los corchetes.

Tu problema surge porque la variable i está vacía.

Siempre, _siempre_ usad comillas para las variables en test:

1
if test -d "$i"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar