Bash: Lectura de datos del teclado (uso de instruccion read)

Para realizar esta prueba, doy por hecho que ya sabes lo basico de ubuntu linux, pero aun asi vamos a realizar esta prueba paso por paso y espero que no te atores con ninguno, empecemos; estando en el escritorio:

  1. Abre una terminal: presiona ALT+F2, escribe gnome-terminal, pulsa ENTER.
  2. Crea un nuevo archivo: escribe touch script2.sh, pulsa ENTER.
  3. Abre el archivo recien creado con el editor nano: escribe nano script2.sh, pulsa ENTER.
  4. Escribe el siguiente codigo: (en el codigo se explica lo que hace cada cosa):
    #!/bin/bash
    #Ejemplo #2: Script que muestra como asignar valores a variables en forma interactiva por el
    #            usuario, uso de la funcion read.
    #Author: Gonzalo Silverio  -> gonzasilve@gmail.com
    #Archivo: script2.sh
    #pedir el dato al usuario
    echo 'Introduzca un  valor para la variable var1:'
    #leer el dato del teclado y guardarlo en la variable de usuario var1
    read var1
    #Mostrar el valor de la variable de usuario
    echo $var1
    echo 
    #Avisar al usuario que se ha terminado de ejecutar el script 
    echo ---------Fin del script.-------------
    
  5. Guarda los cambios: presiona CTRL+O (O, no cero), te pedira el nombre del archivo, pulsa ENTER.
  6. Cierra el editor nano: presiona CTRL+X.
  7. Da permiso de ejecucion al archivo: escribe chmod +x script2.sh, pulsa ENTER.
  8. Ejecuta el script: escribe sh script2.sh

La instruccion read permite leer cadenas del teclado, se pueden asignar n numero de cadenas de caracteres a una variable, hasta que se pulse ENTER. Otra cosa, como se puede ver para la lectura con la instruccion read no es necesario poner el signo $ (dolar), pero si es necesario para la instruccion echo. A continuacion pongo una imagen donde se realizan algunos pasos anteriores y por supuesto; se muestra la ejecucion del script:

Ejecucion de script2 para Bash

Ejecucion de script2 para Bash

nota 1: Si no tienes nano puedes instalarlo con el comando sudo apt-get install nano
nota 2: Otra forma de ejecutar el script es escribir ./script2.sh
nota 3: Recuerda que todas las lineas del script que empiezan con # (gatito) son comentarios; a excepcion de la primera, asi que puedes omitirlas y no escribirlas.

Bueno eso es todo y pues si tienes dudas, te sirvio el ejemplo o quieres decir algo puedes dejar tu comentario que con gusto lo leere y si es apropiado te contesto. Hasta pronto.

Anuncios

Programa CGI: Lectura de variables de ambiente

En esta ocasion muestro como se pueden leer las variables de ambiente. Recordemos que las variables de ambiente son variables que existen dentro de cada cliente y nos permiten recuperar ciertas caracteristicas acerca de dicho cliente y del servidor donde se ejecuta el programa CGI. Bueno aca el programa fuente:

/*
	Instituto Tecnologico de Zacatepec
 Descripcion:		Lectura de las variables de ambiente con C
 Author: 	Gonzalo Silverio	gonzasilve@gmail.com
 Archivo:	leerVariablesCGI.c
*/

#include<stdio.h>
#include<stdlib.h>

// almacenamiento temporal de la variable de ambiente
char * cp;
char * empty = "<empty>";

main(int argc, char ** argv)
{
  // enviar el encabezado de tipo mime
  printf("Content-type: text/html\n\n");

  // Macro para desplegar la variables de ambiente
  #define safenv(a) ((cp = getenv(a)) ? cp : empty)

//Titulo de la pagina web
 printf("<HTML><HEAD><TITLE>Leer Variables de ambiente</TITLE></HEAD>\n");
//Cuerpo de la pagina web
 printf("<BODY><br><b>Las Variables de ambiente son:</b><br><br>");

  // A continuacion vamos a desplegar todas las variables estandar de CGI
  printf("GATEWAY_INTERFACE = %s <br>",safenv("GATEWAY_INTERFACE"));
  printf("REQUEST_METHOD = %s <br>",safenv("REQUEST_METHOD"));
  printf("SCRIPT_NAME = %s <br>",safenv("SCRIPT_NAME"));
  printf("QUERY_STRING = %s <br>",safenv("QUERY_STRING"));
  printf("SERVER_SOFTWARE = %s <br>",safenv("SERVER_SOFTWARE"));
  printf("SERVER_NAME = %s <br>",safenv("SERVER_NAME"));
  printf("SERVER_PROTOCOL = %s <br>",safenv("SERVER_PROTOCOL"));
  printf("SERVER_PORT = %s <br>",safenv("SERVER_PORT"));
  printf("HTTP_USER_AGENT = %s <br>",safenv("HTTP_USER_AGENT"));
  printf("HTTP_ACCEPT = %s <br>",safenv("HTTP_ACCEPT"));
  printf("PATH_INFO = %s <br>",safenv("PATH_INFO"));
  printf("PATH_TRANSLATED = %s <br>",safenv("PATH_TRANSLATED"));
  printf("REMOTE_HOST = %s <br>",safenv("REMOTE_HOST"));
  printf("REMOTE_ADDR = %s <br>",safenv("REMOTE_ADDR"));
  printf("REMOTE_USER = %s <br>",safenv("REMOTE_USER"));
  printf("REMOTE_IDENT = %s <br>",safenv("REMOTE_IDENT"));
  printf("AUTH_TYPE = %s <br>",safenv("AUTH_TYPE"));
  printf("CONTENT_TYPE = %s <br>",safenv("CONTENT_TYPE"));
  printf("CONTENT_LENGTH = %s <br>",safenv("CONTENT_LENGTH"));
  printf("</BODY>");
}

aka la compilacion:

Compilacion lectura de variables de ambiente

…y ahora la ejecucion en el navegador, como se ve algunas variables no tienen valor, lo que quiere decir que tienen un valor 0 ho que simplemente no tienen nada.

Ejecucion de prog. CGI que lee variables de ambiente.

bueno eso es todo y espero comentarios o dudas.

CGI del Clasico Hola mundo en C

Ando un poco aburridon y ps para recapitular un poco sobre lo aprendido en mi materia de programacion web, pues en esta ocasion nada mas dejo el CGI del clasico Hola Mundo, escrito en lenguaje C.

/*
		Instituto Tecnologico de Zacatepec
	Descripcion: Version CGI del clasico programa Hola Mundo
	Author: Gonzalo Silverio  gonzasilve@gmail.com
	Archivo: HolaMundo.c
*/

#include<stdio.h>
main( int argc, char **argv)
{
	//Enviar el encabezado de tipo mime
	printf("Content-type: text/html\n\n");

	//Titulo de la pagina web
	printf("<HTML><HEAD><TITLE>Practica con CGI</TITLE></HEAD>\n");
	//Cuerpo de la pagina web
	printf("<BODY><br><H1 align='center'>Hola Mundo de CGI's</H1>");
	printf("<BR><B></BODY></HTML>\n");
}

Aka el pantallazo de la compilacion para que vean que si furula:

Compilacion de clasico CGI Hola Mundo en C

y ahora la ejecucion en el navegador:

Ejecucion de clasico CGI Hola Mundo en C

como se ve es algo muy basico pero me sirve para tener algun apunte y tbn espero dudas y comentarios.

A %d blogueros les gusta esto: