Script

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Guardo por las dudas)
Línea 99: Línea 99:
 
*'''false'''  
 
*'''false'''  
 
Indica que una condición es falsa
 
Indica que una condición es falsa
 +
 +
==Argumentos propios de bash==
 +
 +
Bash como programa tiene algunos argumentos útiles y propios que se usan con frecuencia en la elaboración de Scripts en los condicionales vinculados a la determinación de elementos sobre los archivos, variables, cadenas de palabras o cadenas de pruebas, los mas comunes son:
 +
 +
{| border="1" style="float: left; margin: 0 0 1em 1em;"
 +
! Argumentos de Archivos !! Cierto si.... (salida 0)
 +
|-
 +
| -d || Archivo existe y es un directorio
 +
|-
 +
| -c || Archivo existe y es de caracteres
 +
|-
 +
| -e || Archivo existe
 +
|-
 +
| -h || Archivo existe y es un vínculo simbólico
 +
|-
 +
| -s || Archivo existe y no está vacío
 +
|-
 +
| -f || Archivo existe y es normal
 +
|-
 +
| -r || Tienes permiso de lectura del archivo
 +
|-
 +
| -w || Tienes permiso de escritura en el archivo
 +
|-
 +
| -x || Tienes permiso de ejecución del archivo
 +
|-
 +
| -O || Eres propietario del archivo
 +
|-
 +
| -G || Perteneces al grupo que tiene acceso al archivo
 +
|-
 +
| -n || Variable existe y no es nula
 +
|-
 +
| Archivo1 nt Archivo2 || Archivo1 es mas nuevo que Archivo2
 +
|-
 +
| Archivo1 -ot Archivo2 || Archivo1 es mas viejo que Archivo2
 +
|}
 +
{| border="1" style="float: left; margin: 0 0 1em 1em;"
 +
! Agumentos de cadenas !! Cierto si
 +
|-
 +
| -z || La cadena está vacía
 +
|-
 +
| -n || La cadena no está vacía
 +
|-
 +
| cadena1 = cadena2 || Si las cadenas son iguales
 +
|-
 +
| cadena1 != cadena2 || Si las cadenas son diferentes
 +
|-
 +
| cadena1 < cadena2 || Si la cadena 1 va antes en el orden lexicográfico
 +
|-
 +
| cadena1 >cadena2 || Si la cadena 1 va despues en el orden lexicográfico
 +
|-
 +
|}

Revisión de 22:31 10 feb 2008

Contenido

Definición

Un Script (o guion) para Bash es un archivo de texto que contiene una sucesión de comandos de Shell que pueden ejecutar diversas tareas de acuerdo al contenido del texto del guión. De esta forma pueden automatizarse muchas acciones para alguna necesidad particular o para la administración de sistemas. El guión debe escribirse en un orden lógico pues Bash ejecutará el guión en el orden en que se escriben las lineas, de la misma forma que cuando se realiza una tarea cualquiera por una persona, por ejemplo; primero hay que poner la escalera y luego subirse.

Los Scripts de Bash deben tener siempre como primera linea del guión el texto, para que el Sistema Operativo ejecute la acción usando el programa Bash.

#!/bin/bash

Una vez escrito el Script y guardado en el disco en alguno de los directorios "bin" con el nombre y permiso de ejecución apropiados, se invoca, escribiendo en la consola el nombre del guión. Si el guión tiene una interfaz gráfica se invoca como otro programa cualquiera, uno o dos clic sobre el guión o su icono. Este puede escribirse en cualquiera de los editores de texto de Linux, por ejemplo Kwrite y será ya un guión funcional cuando se salve a alguno de los "bin".

Nota: Es buena práctica cuando se escribe un guión salvarlo apenas se hayan escrito las primeras línea para ir comprobando su funcionamiento e ir corrigiendo los problemas.

Variables

Es impensable elaborar Scripts de Bash sin el uso de las variables. Una variable es una estructura de texto (una letra, un número o sucesiones de ellos) que representa alguno de los elementos que varían en valor y/o significado en el entorno de la Shell, sirviendo como elemento básico de entrada/salida de valores a y desde los comandos en su ejecución consecutiva. Para invocar una variable se utiliza el carácter especial $ precediendo al nombre de la variable.

Exixten dos tipos de variables:

Variables intrínsecas de Bash.

Estas son elaboradas por defecto por el propio Bash y son:

  • $0

Nombre del guión

  • $1....$n

Variables que almacenan los n argumentos (opciones) proporcionados al comando.

  • $#

Variable que contiene el total de los argumentos proporcionados.

  • $*

Conjunto de los argumentos.

  • $?

Valor de ejecución del comando anterior, si es cero es que el comando anterior se ejecutó sin errores, de lo contrario hubo algún error.

  • $$

Identifica el proceso del guión.

  • $!

Identifica el último proceso arrancado en el trasfondo (background).

Variables creadas por el programador.

Las variables pueden ser creadas en cualquier momento, pero siempre antes de su utilización de manera muy simple, se escribe:

nombre_variable=valor_variable

en cualquier momento posterior a la creación si se coloca $nombre_variable dentro del entorno de la Shell el sistema colocará allí valor_variable.

SALUDO=Bienvenido

En cualquier momento posterior si se pone $SALUDO, Bash colocará ahí Bienvenido.

Una variable también puede ser la salida de un comando si ponemos al principio y final del mismo un acento invertido.

SALIDA=`comando`   

le indicará al sistema que donde se escriba $SALIDA debe poner la salida de ese comando. Es práctica común utilizar mayúsculas para las variables a fin de identificarlas fácilmente dentro del guión.

Cuando se ejecutan Scripts que pueden ser "hijos" de otro guión en ocasiones es necesario exportar las variables, esto se hace escribiendo;

export nombre_variable

Caracteres especiales

Existe un grupo de caracteres especiales (también llamados meta caracteres) que tienen significado propio para Bash. Algunos son:

  • \

Le indica a Bash que ignore el carácter especial que viene después.

  • " "

Cuando se encierra entre comillas dobles un texto o una variables si esta es una frase (cadena de palabras) Bash lo interpretará como una cadena única.

  • $

Identifica que lo que le sigue es una variable.

  • ' '

Las comillas simples se usan para desactivar todos los caracteres especiales encerrados dentro de ellas, así tenemos que si escribe '$VARIABLE' Bash interpreta literalmente lo escrito y no como variable.

  • #

Cuando se coloca este carácter dentro de una linea del guión, Bash ignora el resto de la linea. Muy útil para hacer comentarios y anotaciones o para inhabilitar una linea de comandos al hacer pruebas.

  • ;

Este carácter se usa para separar la ejecución de distintos comandos en una misma linea de comandos.

  • ``

Se utiliza como se explicó en el punto anterior, para convertir la salida de un comando en una variable. El comando en cuestión se ejecuta en una sub shell.

También están |, (), !, >, <, cuyo significado se verá mas adelante. El espacio es otro carácter especial y se interpreta por bash como el separador del nombre del programa y las opciones dentro de la linea de comandos, por esta razón es importante encerrar entre comillas dobles el texto o las propias variables cuando son una frase de varias palabras.

Otro carácter que debe evitarse en lo posible su uso es el guión (-) ya que para la mayoría de los programas se usa para indicarle al propio programa que lo que sigue es una de sus opciones, de manera tal por ejemplo, si usted crea un archivo con nombre -archivo (en caso que pueda) después será difícil borrarlo ya que rm (programa que borra) tratará el archivo como una de sus opciones (al "ver" el Script) y dará de error algo así, "Opción -archivo no se reconoce".

Palabras especiales

Hay un grupo de palabras que tienen significado especial para bash y que siempre que se pueda deben evitarse cuando se escriben lineas de comandos para no crearle "confusiones" algunas son: exit, break, continue, true, false, return etc... cuyo significado es mas o menos así:

  • exit

Se sale del guión

  • break

Se manda explícitamente a salir de un ciclo

  • continue

Se manda explícitamente a retornar en un ciclo

  • return

Como exit pero solo se sale del comando u operación sin cerrar el guión

  • true

Indica que una condición es verdadera

  • false

Indica que una condición es falsa

Argumentos propios de bash

Bash como programa tiene algunos argumentos útiles y propios que se usan con frecuencia en la elaboración de Scripts en los condicionales vinculados a la determinación de elementos sobre los archivos, variables, cadenas de palabras o cadenas de pruebas, los mas comunes son:

Argumentos de Archivos Cierto si.... (salida 0)
-d Archivo existe y es un directorio
-c Archivo existe y es de caracteres
-e Archivo existe
-h Archivo existe y es un vínculo simbólico
-s Archivo existe y no está vacío
-f Archivo existe y es normal
-r Tienes permiso de lectura del archivo
-w Tienes permiso de escritura en el archivo
-x Tienes permiso de ejecución del archivo
-O Eres propietario del archivo
-G Perteneces al grupo que tiene acceso al archivo
-n Variable existe y no es nula
Archivo1 nt Archivo2 Archivo1 es mas nuevo que Archivo2
Archivo1 -ot Archivo2 Archivo1 es mas viejo que Archivo2
Agumentos de cadenas Cierto si
-z La cadena está vacía
-n La cadena no está vacía
cadena1 = cadena2 Si las cadenas son iguales
cadena1 != cadena2 Si las cadenas son diferentes
cadena1 < cadena2 Si la cadena 1 va antes en el orden lexicográfico
cadena1 >cadena2 Si la cadena 1 va despues en el orden lexicográfico
Herramientas personales