Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Variables de Usuarios en Bash

El objetivo de la variable de usuario es guardar alguna informacion.
Nombre: letras y numeros y el carácter “_”.

No puede haber espacio en la asignacion de una variable, ya que el shell lo 1º que hace es trocear la lineas, y ver los argumentos.

var=valor (ok!, bien definida)
var = valor (no!, mal definida)

Una variable puede contener una cadenas de caracteres tiene que estar definida entre comillas, para quitarte problemas con caracteres especiales.

Variables no definidas: no causan ningun tipo de error (no es como C), su contenido es vacio.

Para eliminar una variable :
unset nombre

Aunque cuando termine el script se eliminan todas.

Aislar nombre de variables:
Para concatenar las variable tenemos que usar ${nombre_variable}${nombre_variable2}
$arch=resu
$fechadia=20020117
$nuevoarch=${arch_}$fechadia
$echo nuevoarch
resu_20020117


Sustitución de variables:
Shell ofrece la posibilidad de atribuir un valor por defecto a las variables no inicializadas, o al contrario, a las inicializadas:


Expresion $(variable    valor)
      Es -
     Es =
   Es +
     Es ?
Variable vacia / no definida
Pone el valor
Pone el valor
Pone vacia
Pone el nombre de la variable seguido de una cadena de caracteres (un mensaje)
Variable no vacia / definida con algun valor
Contenido de la variable
Pone el contenido de la variable y se le asigna el valor
Pone el valor
Poner el contenido de la variable





Sustitución de comandos:
La mejor forma de ponerlo en Bash en con
variable=$(comando)
La variable se le asigna el resultado que ha generado ese comando.


Caracteres de protección:
Son caracteres hacen que las propiedades especiales que tienen algunos caracteres “espacio”, “\” en bash, pierdan sus carácter especial.

Comillas simples: Eliminan el significado a todos los caracteres especiales del shell (en un intervalo), las comillas deben de ser un número para en la línea de comando. No anulan execto a ellas mismas y a la barra invertida.

carácter \: contrabarra elimina el significado especial del siguiente carácter que le sigue,

comillas dobles: eliminan el significado de todos los caracteres especiales del shell, exepto: $,``, $() y \ y a si misma


Recapitulacion de caracteres:


Interpretacion de una linea de comandos: Secuencia de ejecución
  1. Aislamiento de las palabras separadas por los caracteres de espacio, tablacion y salto de linea
  2. Tratamiento de los caracteres de proteccion ('',””,\)
  1. Sustituticucion de las variable ($)
  2. sustitucion de los comandos (``,$()
  3. Sustitucion de los caracteres de generacion de nombre de archivo (*,?,[],etc)
  4. Tratamiento de las tuberias y redirecciones
  5. ejecucion del comando



Comando nl:
nl = igual que el cat, pero pone el nº de linea del fichero que describes


Escritura y ejecucion de un script en shell

Un script se ejecuta sobre un shell hijo (crea un segundo bash, y le mete el código del del script). Si en un script cambiamos de directorio, el shell padre no se entera, y saldremos al mismo sitio de donde estaba ejecutandose en bash padre.

Forma de ejecutar un script:
Si lo ejecuto en un bash hijo hay 3 formas de hacerlo:
      1. $bash ./prueba (no hace falta que el archivo prueba sea ejecutable ya que bash lo estamos ejecutando con el comando bash)
      2. bash <prueba (redirecciono toma como entrada prueba y se lanza un nuevo bash)
      3. ./prueba (tiene que ser ejecutable el archivo, permiso de ejecución: chmod u+x prueba). Se tiene encuenta la primera linea del prueba: #!/bin/bash, lanzara una consola bash donde se ejecuta, pero si pone #!/bin/sh, lanzara sh. Sino lanzara la misma shell donde estes.
        Nota: lo importante es que cada shell tiene sus diferencias en script. Y nos script no funcionaran con sh, pero si con bash
Método para ejecutar un script en shell actual padre (no en el hijo).
Comando . (punto)
$. ./prueba

En este caso los cambios de directorio, por ejemplo cp, si se ejecutarian en nuestro terminal.

Los comentarios en los script, se usan el carácter: #

No hay comentarios:

Publicar un comentario