Unix - condicion

 
Vista:

condicion

Publicado por Dino (9 intervenciones) el 02/07/2013 17:50:00
Buenos días.

estoy haciendo un shell con lo siguiente

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
# ===Respaldo MetaDatos===
fecha=`date +%d-%m-%Y`
su sas
# Define la ruta donde se va a ejecutar el respaldo
cd /sas/sasconf/Lev1/SASMeta/MetadataServer
 
./MetadataServer.sh status
 
# si el resultado es "is running"
 
# Ejecuta el backup
./MetadataServer.sh backup
# Copia recursiva del contenido
cp -R SASBackup SASMetaBackup_[fecha]
#Mueve el contenido
mv SASMetaBackup_[fecha] /spds2
 
 
#si el resultado es "is stopped"
 
 
./MetadataServer.sh start
# Pausa de tres minutos
sleep 180
# Ejecuta el backup
./MetadataServer.sh backup
# Copia recursiva del contenido
cp -R SASBackup SASMetaBackup_[fecha]
#Mueve el contenido
mv SASMetaBackup_[fecha] /spds2
 
exit


la parte donde estoy atorado es en hacer la condicion para que ejecute una u otra opcion.

espero pueda contar con su ayuda. saludos.
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
Val: 35
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

condicion

Publicado por xve (70 intervenciones) el 02/07/2013 21:30:07
Hola Dino, yo lo haría así:

1
2
3
4
5
6
7
8
# atencion con la direccion de las comillas simples...
resultado=`./MetadataServer.sh status`
 
if [ "$resultado" = "is running" ];then
    ...
else
    ...
fi

Coméntanos, ok?
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

condicion

Publicado por Dino (9 intervenciones) el 02/07/2013 23:10:38
Gracias por tu aportación, abusando un poco, mi duda en si es sobre como puedo obtener el resultado, te explico, cuando corro ./MetadataServer.sh status los posibles resultados queda así:

SAS Metadata Server 1 (PIDXXXXXX) is running...

SAS Metadata Server 1 (PIDXXXXXX) is stoped...

lo que no se es como almacenar esto en el resultado o como leerlo.

Gracias
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
Imágen de perfil de xve
Val: 35
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

condicion

Publicado por xve (70 intervenciones) el 03/07/2013 07:04:35
El código que te he mostrado, debería guardar dicho resultado en la variable $resultado.

Si lo que deseas es coger por ejemplo, la ultima palabra, running o spoped, puedes utilizar awk, algo así:
1
resultado=`echo $resultado | awk '{print $NF}'`

Coméntanos si te sirve, ok?
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

condicion

Publicado por Dino (9 intervenciones) el 03/07/2013 16:19:02
mira soy medio piedra para esto, así está bien:

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
# ===Respaldo MetaDatos===
fecha=`date +%d-%m-%Y`
su sas
# Define la ruta donde se va a ejecutar el respaldo
cd /sas/sasconf/Lev1/SASMeta/MetadataServer
 
./MetadataServer.sh status
 
resultado=`echo $resultado | awk '{print $NF}'`
 
# si el resultado es "is running"
 
if [ "$resultado" = "is running" ];then
 
# Ejecuta el backup
./MetadataServer.sh backup
# Copia recursiva del contenido
cp -R SASBackup SASMetaBackup_[fecha]
#Mueve el contenido
mv SASMetaBackup_[fecha] /spds2
 
#si el resultado es "is stopped"
else
 
./MetadataServer.sh start
# Pausa de tres minutos
sleep 180
# Ejecuta el backup
./MetadataServer.sh backup
# Copia recursiva del contenido
cp -R SASBackup SASMetaBackup_[fecha]
#Mueve el contenido
mv SASMetaBackup_[fecha] /spds2
 
fi
 
exit
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
Imágen de perfil de xve
Val: 35
Ha mantenido su posición en Unix (en relación al último mes)
Gráfica de Unix

condicion

Publicado por xve (70 intervenciones) el 03/07/2013 18:03:42
Hola Dino, en principio parece que si...pero antes del if, muestra el contenido de la variable, así veras exactamente que te devuelve... algo así.
1
echo $resultado

En principio te cojera la ultima palabra... running únicamente
1
if [ "$resultado" = "running" ];then


Coméntanos, ok?
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

condicion

Publicado por Dino (9 intervenciones) el 03/07/2013 18:09:48
si, me equivoque, pero la sintaxis está bien?, digo para proceder a probarlo, o le ves algún error?
Gracias por tu aportación
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