Diferencia entre revisiones de «Scripts Bash»
Sin resumen de edición |
(→shift) |
||
Línea 97: | Línea 97: | ||
*) | *) | ||
echo "Unknown argument: $1" | echo "Unknown argument: $1" | ||
exit 0 | exit 0 | ||
;; | ;; | ||
Línea 103: | Línea 102: | ||
shift | shift | ||
done | done | ||
El while recorre todos los argumentos, aunque sólo comprueba el $1 en cada iteración, se queda con $2 y pasa al siguiente. De esta manera, el órden de los argumentos y sus opciones no es relevante. | |||
# miscript -a opciona -b opcionb -d opciond | |||
# miscript -b opcionb -c opcionc |
Revisión del 18:13 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" exit 0 ;; esac shift done
El while recorre todos los argumentos, aunque sólo comprueba el $1 en cada iteración, se queda con $2 y pasa al siguiente. De esta manera, el órden de los argumentos y sus opciones no es relevante.
# miscript -a opciona -b opcionb -d opciond # miscript -b opcionb -c opcionc