Diferencia entre revisiones de «Scripts Bash»
Sin resumen de edición |
Sin resumen de edición |
||
Línea 64: | Línea 64: | ||
== Variables == | == Variables == | ||
'''$1,$2,$3...$9''' Argumentos | * '''$0''': Nombre del script. | ||
'''$#''' Candidad de argumentos | * '''$1,$2,$3...$9''' Argumentos. En principio no se puede poner más de 9 argumentos. Si se quiere poner 10 o más, se puede recurrir al shift o poniéndolo como ${12} | ||
'''$*''' Todos los argumentos | * '''$#''' Candidad de argumentos | ||
'''$?''' : a 0 si el comando anterior ha terminado sin dar error. A 1 o más si ha dado error. | * '''$*''' Todos los argumentos | ||
'''$_''' : El primer argumento del comando anterior | * '''$?''' : a 0 si el comando anterior ha terminado sin dar error. A 1 o más si ha dado error. | ||
* '''$_''' : El primer argumento del comando anterior | |||
===shift=== | |||
Este comando permite usar un mismo número de argumento para ir recorriéndolos. | |||
En este ejemplo se ve bastante bien. [http://www.ehu.es/ehusfera/davidfernandez/2010/03/01/bash-captura-de-parametros-en-un-script/ Via] | |||
while test -n "$1"; do | |||
case "$1" in | |||
-a) | |||
opciona=$2 | |||
shift | |||
;; | |||
-b) | |||
opcionb=$2 | |||
shift | |||
;; | |||
-c) | |||
opcionc=$2 | |||
shift | |||
;; | |||
-d) | |||
opciond=$2 | |||
shift | |||
;; | |||
*) | |||
echo "Unknown argument: $1" | |||
print_usage | |||
exit 0 | |||
;; | |||
esac | |||
shift | |||
done |
Revisión del 18:04 19 nov 2012
Redirecciones
$ cmd > fichero
Redirige la salida estandar a un fichero.
$ cmd 2> fichero
Redirige la salida de error a un fichero.
$ cmd >> fichero
Añade a un fichero la salida estandar sin borrar el contenido anterior.
$ cmd 2>> fichero
Añade los errores al final de un fichero.
$ cmd &> fichero
Redirige la salida estandar y la de error a un fichero.
$ cmd > fichero 2>&1
Otra manera de redirigir las dos salidas a un fichero.
$ cmd > /dev/null $ cmd 2> /dev/null $ cmd &> /dev/null
Descartar la salida estándar, la de error o las dos.
$ cmd < fichero
Redirige el contenido de un fichero a la entrada estandar del comando.
$ cmd << FIN linea1 linea2 FIN
Redirige una serie de líneas a un comando. Esto se llama Here-Document. La palabra FIN sólo es para indicar el final de las líneas y puede ser cualquier otra.
$ cmd <<< "palabra"
Redirecciona el texto al comando. Se llama here-string.
$ exec 2> fichero
Redirige la salida de error a un fichero para todos los comandos.
$ exec 3< fichero
Abre un fichero para leer usando un nuevo descriptor.
$ exec 3> fichero
Abre un fichero para escribir usando un nuevo descriptor.
$ exec 3<> fichero
Abre un fichero para leer o escribir usando el descriptor 3.
$ exec 3>&-
Cierra un descriptor de fichero.
Variables
- $0: Nombre del script.
- $1,$2,$3...$9 Argumentos. En principio no se puede poner más de 9 argumentos. Si se quiere poner 10 o más, se puede recurrir al shift o poniéndolo como ${12}
- $# Candidad de argumentos
- $* Todos los argumentos
- $? : a 0 si el comando anterior ha terminado sin dar error. A 1 o más si ha dado error.
- $_ : El primer argumento del comando anterior
shift
Este comando permite usar un mismo número de argumento para ir recorriéndolos.
En este ejemplo se ve bastante bien. Via
while test -n "$1"; do case "$1" in -a) opciona=$2 shift ;; -b) opcionb=$2 shift ;; -c) opcionc=$2 shift ;; -d) opciond=$2 shift ;; *) echo "Unknown argument: $1" print_usage exit 0 ;; esac shift done