Foros del Web » Administración de Sistemas » Unix / Linux »

Un simple if en C shell

Estas en el tema de Un simple if en C shell en el foro de Unix / Linux en Foros del Web. Hola a todos! Estoy algo desesperado. No puedo hacer una simple comparación en un if con c shell. Antes siempre lo había hecho con números. ...
  #1 (permalink)  
Antiguo 04/04/2009, 06:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 5 meses
Puntos: 1
Un simple if en C shell

Hola a todos!

Estoy algo desesperado. No puedo hacer una simple comparación en un if con c shell. Antes siempre lo había hecho con números. Ahora quiero comprobar que un parámetro ( será $2) esté vacío ( será "") o bien tenga algo (cualquier cadena de texto).

LLevo dos horas buscando por internet y no lo logro, he probado mil cosas.

Cómo debería hacerlo?

Siempre me dice que '==' not found, o '!=' not found etc etc...

Alguna ayuda con esta jilipollez por favor?:(

Código:
#!/bin/csh

if ($1 == "") then
 echo "no hay nada"
else
echo $1
fi
Código:
samy@samylaptop:~/Escritorio$ sh pr.sh 
pr.sh: 7: ==: not found
Código:
samy@samylaptop:~/Escritorio$ sh pr.sh asdasd
pr.sh: 7: asdasd: not found
asdasd
Por qué me sale ese maldito mensaje? O_o


Por cierto, es curioso pero si pongo $2 entre comillas, me dice que permission denied, aunque llame al script con sudo, porqué puede ser?
  #2 (permalink)  
Antiguo 04/04/2009, 09:06
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 20 años, 4 meses
Puntos: 47
Respuesta: Un simple if en C shell

Lo estas corriendo con "sh" y deberías correrlo con "csh", o simplemente darle permisos de ejecución a tu script y correrlo por si mismo.

Saludos.
__________________
¡Volviendo a la programación!
  #3 (permalink)  
Antiguo 04/04/2009, 13:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Un simple if en C shell

Hola!

En lugar de csh lo he cambiado y he puesto sh (tanto en el script como en la ejecución).

Le he cambiado los permisos (chmod 777), lo ejecuto como sh script.sh y me sigue diciendo lo mismo.

Alguna idea de porqué no puedo hacer una comparación de strings en un maldito if?? :S

En lugar de paréntesis debería poner claudátors? Es que creo que eso es para bash no para SH... O....??

Help, please :)
  #4 (permalink)  
Antiguo 04/04/2009, 13:48
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Un simple if en C shell

Cita:
Iniciado por samy4ever Ver Mensaje
Hola!

En lugar de csh lo he cambiado y he puesto sh (tanto en el script como en la ejecución).

Le he cambiado los permisos (chmod 777), lo ejecuto como sh script.sh y me sigue diciendo lo mismo.

Alguna idea de porqué no puedo hacer una comparación de strings en un maldito if?? :S

En lugar de paréntesis debería poner claudátors? Es que creo que eso es para bash no para SH... O....??

Help, please :)
BASH = "Bourne Again Shell"
SH = "Bourne Shell" (por defecto en todos los UNIX)

Bash es una shell compatible con SH, extendiéndole algunas cosas. En LINUX /bin/sh suele ser un enlace simbólico a /bin/bash. BASH se comporta como la SH estándar cuando se la llama como "sh".

Por lo tanto, si ahora estás trabajando con SH, deberías usar los corchetes (o test)

Ni idea de cómo hacer la comparación en CSH.

Saludos.
  #5 (permalink)  
Antiguo 05/04/2009, 10:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Un simple if en C shell

Bueno, ya lo arreglé. Parece ser que en un if [] then else... El THEN debe ir en una línea aparte, no puede estar en la misma que el IF. Joder, y yo rayándome la cabeza xD!
  #6 (permalink)  
Antiguo 05/04/2009, 12:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Un simple if en C shell

sí puede ir en la misma línea, siempre que agregues un ; de esta forma:

if [ lo que sea ]; then

Pero qué bueno que igual pudiste encontrarle la forma


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:30.