Professional Documents
Culture Documents
rogramacin de
rogramacin de
8hell 8cripts
8hell 8cripts
apacitacin 2005 KT ngeniera Electrnica SRL
2
ontenido:
+ Mdulo 0 Generalidades
+ Mdulo 1 !ntroduccin
+ Mdulo 2 Caracteres especiales y Quoting
+ Mdulo 3 variables
+ Mdulo 4 Operadores
+ Mdulo 5 Construcciones condicionales
+ Mdulo 6 Construcciones iterativas o de repeticin
+ Mdulo 7 Funciones
+ Mdulo S Entrada y Salida Redireccin
+ Mdulo 9 Herramientas Niscelaneas
+ Mdulo 10 Filtros
+ Mdulo 11 Lenguaje wk
+ Mdulo 12 Lenguaje sed
+ Mdulo 13 - Depuracin de scritps. Ejercitacin
+ Mdulo 14 Conclusiones
Agenda {mdulos)
apacitacin 2005 KT ngeniera Electrnica SRL
3
Mdulo 0
Generalidades
apacitacin 2005 KT ngeniera Electrnica SRL
4
- Shell
!ntrprete de comandos
Lenguaje de programacin
- Entorno de trabajo
- Case sensitive
- Si un programa no esta en el PATH: .fnombre_programa
- Prompts:
$: usuario normal
#: usuario administrador o superusuario (root)
- Scripts
- Lista de comandos UN!X reunidos en un archivo. Reutilizacin de cdigo
- Un script es un nuevo comando
Filosofia UN!X crear comandos complejos a partir de comandos simples"
Generalidades
apacitacin 2005 KT ngeniera Electrnica SRL
6
- El shell es independiente del S.O. generacin de docenas de shells
- Bourne shell (Steven Bourne, UN!X version 7, 1979), conocido como sh
- Principal alternativa a sh fue el shell (Bill Joy, BSD, 1981), csh
- Turbo shell, tcsh, superconjunto de csh con mejoras respecto a
amigabilidad y velocidad
- Korn shell (David Korn, AT8T, 1986), ksh, comercial, {ksh) > {sh) U {csh)
- Una alternativa sin costo es la versin de Korn shell conocida como pdksh
(Public Domain Korn shell). pdksh esta disponible como cdigo fuente
- Bourne Again shell (Brian Fox, Chet Ramey, 19881993), bash
- Creado para su uso en el proyecto GNU (Richard Stallman, FSF), no comercial
- Se convirt rapidamente en el derivado de Bourne Shell mas popular
- Shell estandar utilizado ampliamente en los sistemas UN!X e incluido en Linux
- {bash) > {csh) U {ksh)
- !ntuitivo y flexible
- Z shell, zsh, (Paul Falstad, Princeton, aprox. 1990) posee similitudes con ksh
{zsh) > {bash) U {ksh) U {tcsh)
Historia de los shell de UNIX
apacitacin 2005 KT ngeniera Electrnica SRL
7
Mdulo 1
!ntroduccin
apacitacin 2005 KT ngeniera Electrnica SRL
8
{Bourne Shell} < {Bourne shell Again} > { Shell} U {Korn Shell}
- aractersticas propias de -shell incorporadas:
- Nanipulacin de directorios.
- Control de trabajos.
- Expansin de llaves, para la generacin de cadenas arbitrarias.
- Caracter tilde (~), manera de referenciar al directorio home.
- Alias, que permiten referenciar mas convenientemente comandos y sus opciones.
- Histrico de comandos, que posibilita reutilizar comandos previamente tipeados.
- aractersticas propias:
- Edicin de linea de comandos, permite usar comandos al estilo vi o emacs.
- Configuracin de teclas (key bindings) permiten establecer secuencias de teclas de
edicin personalizadas .
- Caracteristicas de programacin integrada: la funcionalidad de comandos UN!X (test,
expr, getopt, echo) se integraron en el shell, permitiendo que tareas comunes de
programacin sean realizadas mas clara y eficientemente.
- Estructuras de control, especialmente el select para la generacin sencilla de menus.
- Opciones y variables nuevas permiten personilizar mas el entorno.
- Arrays unidimensionales que permiten facil acceso a lista de datos.
aractersticas de bash
apacitacin 2005 KT ngeniera Electrnica SRL
0
!/bin/bash
Primer script
echo Hola Mundo
$./hol.sh
Hola Mundo
Primer ejemplo
hol.sh
quien interpretara
el resto de los
comandos
comentario comando
jecucin:
apacitacin 2005 KT ngeniera Electrnica SRL
Lee la entrada desde un archivo, como un argumento o desde la
terminal
Divide la entrada en tokens de acuerdo a las reglas de quoting.
Se hacen expansiones de metacaracteres y alias
Se analizan los tokens y se dividen en comandos simples y
compuestos
Se hacen expansiones separando los tokens expandidos en listas de
nombres de archivo y comandos con sus argumentos
Se realizan redireccionamientos, eliminando operadores y
operandos de redireccin
Se ejecuta el comando
Opcionalmente se espera la finalizacin del mismo para recoger su
exit status
mo ejecuta un comando en shell?
apacitacin 2005 KT ngeniera Electrnica SRL
2
Archivos de configuracin de bash {1J5)
- Existen, eventualmente, tres archivos en el directorio home
.bsh_profile
.bshrc
.bsh_logout
- Se utilizan para definir variables yJo ejecutar comandos al ingresar
al sistema, cuando se invoca un nuevo shell o al cerrar la sesin
- Pueden existir o no dependiendo de como se creo la cuenta de
usuario.
Si no existen, el usuario utilizar slo el archivo de sistema
/etc/profile, o puede optar por editarlos l mismo
- El ms importante es .bsh_profile, el cual es leido por el shell
para ejecutar los comandos que contiene cada vez que se ingresa al
sistema
apacitacin 2005 KT ngeniera Electrnica SRL
4
Archivos de configuracin de bash {2J5)
- Algunas lneas de .bsh_profile
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/locl/bin
SHELL=/bin/bsh
MANPATH=/usr/mn:/usr/X11/mn
EDITOR=/usr/bin/vi
PS1='\h:\w\$ '
PS2='> '
set -o ignoreeof
export EDITOR
- Si se agregan nuevas lneas no sern consideradas hasta que el
archivo .bsh_profile sea ledoJejecutado nuevamente,
reingresando al sistema, por ejemplo
- omando source: Ejecuta los comandos en el archivo especificado
$ source .bsh_profile
- Alternativa para source comando, utilizar el comando punto {.)
$ ./bsh_profile
apacitacin 2005 KT ngeniera Electrnica SRL
5
Archivos de configuracin de bash {3J5)
- bash admite dos sinnimos para .bsh_profile:
-.bsh_login, derivado del archivo .login de shell
-.profile, derivado del archivo .profile del Bourne shell y el Korn
shell
- Se lee slo uno de estos al ingresar al sistema
- Orden: .bsh_profile .bsh_login .profile
- .bshrc puede o no existir
- Al iniciar un nuevo shell (un subshell) se leern los comandos de
.bshrc
- eparacin de comandos de inicio y de personalizacin de shell
Si .bshrc no existe entonces no se ejecutarn cuando se inicia un
subshell
apacitacin 2005 KT ngeniera Electrnica SRL
6
Archivos de configuracin de bash {4J5)
# If running interctively, then:
if [ "$PS1" ]; then
# don't put duplicte lines in the history.
# export HISTCONTROL=ignoredups
# enble color support of ls nd lso dd hndy lises
evl `dircolors -b`
lis ls='ls --color=uto
# some more ls lises
#lis ll='ls -l'
#lis l='ls -A'
#lis l='ls -CF'
# set fncy prompt
PS1='\u@\h:\w\$ '
# If this is n xterm set the title to user@host:dir
#cse $TERM in
#xterm*)
# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"
# ;;
#*)
# ;;
#esc
fi
apacitacin 2005 KT ngeniera Electrnica SRL
8
Archivos de configuracin de bash {5J5)
- .bsh_logout es ledo y ejecutado cada vez que se sale del
- Brinda la capacidad de ejecutar comandos, como eliminar archivos
temporarios
- Generalmente hay que definirlo mediante edicin manual
- Si no existe, no se ejecutarn comandos extra a la salida
apacitacin 2005 KT ngeniera Electrnica SRL
9
- A veces la sintaxis de los comandos es difcil de recordar,
especialmente si se utilizan con varias opciones y argumentos
- Alias = sinnomo enriquecido
- Los alias pueden definirse en lnea de comandos, en el
.bsh_profile, o en .bshrc, mediante:
lis [nme=commnd] JJ sin espacios entre el signo =
- Ejemplos: $ alias lf='ls -F'
$ alias revsort='ls [0-9]* | sort -v'
.
- Notas:
- Se permite definir un alias de un alias
- No estn permitidos los alias recursivos $ alias ls='ls -la'
- Los alias slo pueden usarse al principio de un comando {existen
excepciones)
$ alias pkgs=/var/sadm/pkg
$ alias cd='cd '
.
- Implicancias
Brevedad (ls=ls -lha) Costumbre (dir=ls)
Proteccin (rm=rm -i) Personalizacin (moer=more)
Alias
apacitacin 2005 KT ngeniera Electrnica SRL
20
- Los alias permiten definir nombres convenientes para los comandos
pero no cambian realmente el comportamiento del shell
- Una opcin de shell se establece como activaJinactiva {onJoff) y
cambia efectivamente el comportamiento del shell
- Sintaxis bsica {contraintuitiva)
set +o opcion off
set -o opcion on
- Para visualizar el estado de las opciones set -o
- La mayora de los nombres de opciones tienen asociado una letra
para abreviarlas, set -o noglob set -f
- Ejemplos: {en on)
ignoreeof Deshabilita Ctrl-d para salir de la sesin; debe usarse exit
noclobber Deshabilita la redireccin de salida (>) sobre archivos existentes
noglob Deshabilita la expansin de metacaracteres como * y ?
notify Reporta el estado de terminacin de los jobs de inmediato
nounset !ndica un error cuando se intenta utilizar variables no definidas
vi Entra al modo edicin de vi directamente
Opciones
apacitacin 2005 KT ngeniera Electrnica SRL
22
Mdulo 2
Caracteres especiales
y Quoting
apacitacin 2005 KT ngeniera Electrnica SRL
23
- onocidos tambin como metacaractes
- Los metacaracteres poseen significado especial para el shell
- Existen diversas categoras de acuerdo a la funcionalidad con que
estn relacionados
- Ejemplos:
$ cd ~/libros
$ rm *.bck
$ find / -name a* & Bsqueda prolongada
$ echo El dijo \Hola\
$ echo Fecha y hora actual: `date`
$ echo Hay `wc -l /etc/passwd | awk '{print $1}'` usuarios
aracteres especiales
apacitacin 2005 KT ngeniera Electrnica SRL
24
Crcter Significdo
~ Directorio home
` Sustitucin de comndo
# Comentrio
$ Vlor de vrible
& Trbjo en bckground
* Estrell de Kleene (expresiones regulres)
( Inicio de subshell
) Fin de subshell
\ Crcter de Escpe
| Pipe
[ Inicio de conjunto de crcteres (expresiones regulres)
] Fin de conjunto de crcteres (expresiones regulres)
{ Inicio de bloque de comndos
} Fin de bloque de comndos
; Secuencilizr comndos
' Comill simple (Strong quote)
" Comills dobles (Wek quote)
< Redireccin entrd
> Redireccin slid
/ Seprdor de directorios en pthnme
? Reemplzo de un crcter (expresiones regulres)
! Negcin de pipeline
aractes especiales
apacitacin 2005 KT ngeniera Electrnica SRL
26
- Los archivos ocultos comienzan con punto {.), utilizar ls - (:all)
- omodines
? un caracter cualquiera
* cualquier cadena de caracteres
[...] cualquier caracter entre los corchetes (conjunto)
[!...] cualquier caracter no perteneciente al conjunto
- onjuntos
[bc] , b o c
[.,;] punto, coma y punto y coma
[-c] , b o c
[-z] Todas las minusculas
[!0-9] Ningun digito
[0-9!] Todos los digitos y el caracter !
[-zA-Z] Todas las letras minusculas y mayusculas
- Expansin de llaves {brace expansion)
prefijo{cdens}sufijo
$ echo c{p,r,s}s
capas caras casas
Archivos, comodines y pathname expansion
apacitacin 2005 KT ngeniera Electrnica SRL
27
- La teclas de control {CTRL-letr) son otro tipo de metacaracter
- Normalmente no imprimen nada
- RETURN = CTRL-m
BACKSPACE = CTRL-h
- Pueden diferir de sistema en sistema
Control Key Descripcin
CTRL-C Detiene el comndo ctul (envi SIGINT)
CTRL-D Fin de entrd (eof)
CTRL-\ Detiene el comndo ctul
(si no funcion CTRL-C, envi SIGQUIT)
CTRL-S Detiene slid por pntll
CTRL-Q Reinici slid por pntll
DEL or CTRL-? Borr ltimo crcter
CTRL-W Borr l ltim plbr de l lne de comndos
CTRL-U Borr l line de comndos enter
CTRL-Z Suspende el proceso ctul
CTRL-A Cursor l principio de l lne de comndos
CTRL-E Cursor l finl de l lne de comndos
CTRL-R Bsqued recursiv de comndos
ontrol keys
apacitacin 2005 KT ngeniera Electrnica SRL
28
- Deshabilitar el comportamiento por defecto o imprime textualmente
un metacaracter
- Proteger metacaracteres dentro de una cadena a fin de evitar que se
reinterpreten o expandan por accin del shell
- Ejemplos:
$ echo 2 * 3 > 1 es cierto
No produce salida, que pas?
$ echo El vlor de este producto es $120
El valor de este producto es 20
Por que sale 20 y no 120?
$ ls [A]+
-rw-r--r-- 1 admin admin 1250 Apr 2 15:05 Apendice.txt
-rwxrw-rw- 1 admin admin 804 May 5 18:09 append.c
-rwxrw-rw- 1 admin admin 539 May 9 20:58 a.out
- Existen tres mecanismos de quoting
- El caracter de escape \ (escape character)
- Comillas dobles " (double quotes)
- Comillas simples ' (single quotes)
Quoting
apacitacin 2005 KT ngeniera Electrnica SRL
30
- Es el carcter \ {backslash)
- Evita que el siguiente carcter sea interpretado por el shell
$ echo $1234
234
$ echo \$1234
$1234
- Excepcin: \newline, esta secuencia se interpreta como
continuacin de lnea eliminando posteriormente esta secuencia de
la entrada del comando
- Ejemplo:
$ echo Texto escrito en \
> ms de un line
Texto escrito en mas de una linea
El carcter de escape
apacitacin 2005 KT ngeniera Electrnica SRL
3
- Los caracteres encerrados entre comillas dobles preservan su valor
literal
- Tambin se conoce como Weak quoting o Partial quoting
- Los caracteres * y @ tienen un significado especial cuando se
encierran con comillas dobles
- Excepciones:
$ y ' siguen manteniendo sus significados especiales
\ sigue manteniendo su significado especial slo si antecede los caracteres
$, ', , \ o newline.
- Ejemplos:
$ echo El reloj tiene un vlor de $123
El reloj tiene un precio de 23
$ echo El reloj tiene un vlor de \$123
El reloj tiene un precio de $123
$ echo Es un vino con buen 'bouquet'
Es un vino con buen 'bouquet'
omillas dobles
apacitacin 2005 KT ngeniera Electrnica SRL
32
- Los caracteres encerrados entre comillas simples preservan su valor
literal
- No se permite la desreferencia de variables entre comillas simples
- No puede aparecer una comilla simple entre dos comillas simples
- Tambin se conoce como Strong quoting o Full quoting
- Excepcin: \newline
- Ejemplos:
$ VAR=10
$ echo '$VAR'
$VAR
$ echo 'd* = el crcter <d> seguido de culquier cden, \
inclusive l vc'
$ echo 'L comill simple (') tmin es llmdo opostrofo'
omillas simples
apacitacin 2005 KT ngeniera Electrnica SRL
34
- Las cadenas de la forma $'texto' son consideradas de manera
especial
La cadena se expande a texto con los caracteres de escape \
reemplazados como lo especifica el estndar ANSI-
\ alerta (alerta)
\b retroceso (backspace)
\n nueva lnea (new line)
\t tab horizontal (horizontal tab)
\v tab vertical (vertical tab)
\\ barra invertida (backslash)
- Ejemplos:
$ echo Brr invertid = $'\\'
Barra invertida = \
$ echo Se oye .... $'\'
Se oye .... (beep)
$ echo Hol $'\n' Mundo
Hola
Mundo
ANSI- Quoting
apacitacin 2005 KT ngeniera Electrnica SRL
35
$ echo <-$1250.**>; (updte?) [y|n]
$ echo \<-\$1250.\*\*\>\; \(update\?\) \[y\|n\]
$ echo '<-$1250.**>; (update?) [y|n]'
$ echo L vrible '$UID' contiene el vlor --\> "$UID"
La variable $UID contiene el valor --> 1002
$ echo It's <prty> time!
Se solicita ms entrada
Ejemplos combinados
apacitacin 2005 KT ngeniera Electrnica SRL
36
Mdulo 3
variables
apacitacin 2005 KT ngeniera Electrnica SRL
37
- El uso de variables permite crear scripts flexibles y depurables
- Una variable tiene un nombre y un valor {$nombre)
- Para permitir concatenacin ${vrible}cden
- Bash es case sensitive
- Bash es un lenguaje NO fuertemente tipado
- on el shell se pueden crear, asignar y borrar variables
- reacin $ var1=10 # sin espcios!
- Asignacin $ var2=$var1
- Borrado $ unset var1
- El nombre de una variable puede contener slo letras {a-z o A-Z),
nmeros {0-9) o guin bajo {_) y comenzar con una letra o _
- Las variables con nombres "numricos" estn reservadas
- Ejemplos:
CantPersonas cantpersonas CANTPERSONAS
_Nueva_Variable_ producto_120 esta-mal?
1 10mil _________
- Preguntas: $ var3 = 33
$ $var2=50
$ 3=400
Introduccin {1J2)
apacitacin 2005 KT ngeniera Electrnica SRL
38
- No se advierten sobreescrituras
- Es posible almacenar en una variable el resultado de la ejecucin de
un comando.
- on acentos graves
$ lista_de_archivos=`ls`
- on $(...): anidable
$ lista_de_archivos=$(ls)
$ lista_de_archivos=$(ls $(cat directorios.txt))
- Referencia indirecta: Si el valor de una variable es el nombre de una
segunda podemos recuperar el valor de la segunda a travs la
primera
$ dosmil=numero
$ numero=2000
$ echo $dosmil #Referenci direct
numero
$ evl echo \$$dosmil #Referenci indirect
2000
Introduccin {2J2)
apacitacin 2005 KT ngeniera Electrnica SRL
39
- Variables Locales
- Presentes en la instancia actual del shell
- No disponibles para programas iniciados desde el shell {no
exportadas)
- Variables de Entorno
- Disponibles por todo proceso hijo del shell
- Muy tiles para la escritura de scripts y programas
- Pueden visualizarse mediante el comando env
- Se pueden agregar variables al entorno mediante export
- Nombres en maysculas por convencin
- Variables de Shell
- Establecidas y utilizadas por el shell para su funcionamiento
- Algunas son variables de entorno otras son locales
- Pueden visualizarse mediante el comando set
- onvencionalmente tienen nombres en maysculas
PWD UID SHLVL
PATH HOME IFS (Internal Field Separator)
Variables de shell y entorno
apacitacin 2005 KT ngeniera Electrnica SRL
40
- Son aquellas variables cuyos nombres son nmeros
- Estas referencian a los argumentos de los comandos
$ find / -nme progrm.c
*
Nombre comando = find $0
1er argumento = f $1
2do argumento = -nme $2
3er argumento = progrm.c $3
Nas argumentos $4, $5, ..., ${10}, ${11}
- Observaciones:
- bsenme $0: nombre del comando
- dirnme $0: path al nombre del comando
- shift: rota los argumentos hacia la izquierda $i${i+1}, $0 no cmbi
Puede tomar un nmero n como argumento, as los parmetros
n+1...$# se renombran a 1..$#-(n+1)
Parmetros posicionales o argumentos {1J2)
apacitacin 2005 KT ngeniera Electrnica SRL
42
- Variables argumento especiales
$#: cantidad de argumentos pasados al comando
$*: todos los argumentos $*=$1 $2 $3..., una sola palabra
formada por los parmetros separados por el 1er carcter en IFS
$@: todos los argumentos $@=$1 $2 $3..., separadas por ' '
$_: comando previo
$-: flags pasadas al script
$$: pid del proceso shell
$!: pid del ltimo trabajo ejecutndose en background
$?: exit sttus
- $* y $@ difieren slo cuando estan encerradas entre comillas dobles
*
- Nota: Estas variables son read-only
- El comando redonly establece como read-only a las variables
- Ejemplo:
$ FRUTA=kiwi
$ redonly FRUTA
$ echo $FRUTA
kiwi
$ FRUTA=durazno # Produce error
Parmetros posicionales o argumentos {2J2)
apacitacin 2005 KT ngeniera Electrnica SRL
43
- Las variables enteras en Bash son enteros con signo {32 bits)
- Posibilidad de overflow
- Bash por s mismo no comprende la aritmtica de punto flotante
- Bash considera a los nmeros conteniendo punto decimal como
cadenas
- Utilizar el lenguaje bc en los scripts si es necesario realizar clculos
de punto flotante o emplear funciones matemticas de bibliotecas
- Ejemplos:
$ echo "2.35 + 56.90" | bc 59.25
$ echo "sqrt(2)" | bc 1
$ echo "sqrt(2.0)" | bc 1.4
$ echo "sqrt(2.00000000)" | bc 1.41421356
- Nota: Veremos posteriormente ms capacidades de bc
Variables enteras
apacitacin 2005 KT ngeniera Electrnica SRL
44
- Un array es una serie de casillas, cada una conteniendo un valor
- asilla = elemento, los elementos se acceden mediante ndices
- Los ndices comienzan en 0 hasta ms de 5 mil billones
- En bash son nicamente uni-direccionales
- Asignaciones:
$ colores[0]=rojo
$ colores[2]=verde
$ colores[1]=amarillo
$ colores=([2]=verde [0]=rojo [1]=amarillo)
$ colores=(rojo amarillo verde)
$ colores=(rojo [10]=amarillo verde)
- Los arrays se pueden declarar vacos explicitament mediante
$ declare -a colores
- Los atributos establecidos para el array {read-only) se aplican a
todos los elementos
- Para referenciar un elemento: ${array[i]}
$ echo 'No pasar' es ${colores[0]}
- Para referenciar todos los elementos ${name[*]} o ${name[@]}
$ echo ${colores[*]}
Arrays
apacitacin 2005 KT ngeniera Electrnica SRL
47
- El comando set despliega las variables de shell junto a sus valores
- Permite definir el comportamiento del bash {opciones)
- Sintaxis:
set [-bdefhkmntuvxBCHP] [(-|+)o opcion] [rgumento...]
-n Lee comandos pero no los ejecuta, util para depurar sintacticamente scritps
-v Nuestra las lineas de entrada del shell tal cual son leidas
-x Nuestra una traza de un comando y sus argumentos luego de aplicar expansiones
- Su uso habitual en shell scripts es para establecer los parmetros
posicionales
$ set `dte`
$ echo Hor ctul: $4
Hora actual: 08:40:25
omando set
apacitacin 2005 KT ngeniera Electrnica SRL
48
- bash provee getopts para tratar con opciones mltiples y complejas
- puede utilizarse como una condicin en un bucle while, dada la
especificacin del formato de opciones {validez y argumentos), en
el cuerpo del while se procesan
- Sintaxis:
getopts cden vrible
- cden conteniendo letras {opciones) y :'s {argumentos)
- vrible que almacena el argumento de la opcin que est analizndose
- Ejemplo:
while getopts ":b:c" opt; do
case $opt in
a ) procesar la opcin -a ;;
b ) procesar la opcin -b
$OPTARG es el argumento de la opcin ;;
c ) procesar la opcin -c ;;
\? ) echo 'usage: alice [-a] [-b barg] [-c] args...'
exit 1
esac
done
omando getopts
apacitacin 2005 KT ngeniera Electrnica SRL
50
Mdulo 4
Operadores
apacitacin 2005 KT ngeniera Electrnica SRL
5
- Evala una expresin condicional
$ test opcion expresion
- test retorna un 0 {true) o un 1 {flse) luego de la evaluacin
- Una manera ms concisa es mediante [...]
$ [ opcion expresion ]
- Ejemplos:
$ test 1 -gt 2
$ [ 1 -gt 2 ] # espacios obligatorios [_ y _]
- bash introdujo el comando extendido de test, [[...]], con un
comportamiento ms familiar para los programadores
$ [ -f /etc/passwd && -f /etc/group ] # no aceptado
$ [[ -f /etc/passwd && -f /etc/group ]] # ok
- Las construcciones ((...)) y let... evalan expresiones
aritmticas y retornan 0 {true) si el resultado es distinto de cero
y 1 {flse) en caso contrario
$ ((1 > 2))
$ let 1 > 2
El comando test
apacitacin 2005 KT ngeniera Electrnica SRL
52
true y flse
- TRUE
- true: comando que retorna siempre un exit sttus exitoso {cero)
sin hacer nada
$ true
$ echo $?
0
- Tambin evalan a true: 0, 1, -1, "abc".
- FALSE
- flse: comando que retorna siempre un exit sttus no exitoso
{distinto de cero) sin hacer nada
$ flse
$ echo $?
1
- Tambin evalan a false: NULL, variable no inicializada, variable
nula.
apacitacin 2005 KT ngeniera Electrnica SRL
54
Asignacin y Operadores aritmticos
- variable=asignacion
Inicializa o cambia el valor de una variable
Funciona tanto para enteros como para cadenas
- Advertencia: No confundir con el operador de comparacin =
$ var=27
$ animal=tigre # Sin espacios entre el signo =
- Operadores aritmticos
+ sum
- rest
* producto
/ cociente
** exponencicin
% mdulo o mod
+= ms-igul
-= menos-igul
*= por-igul
/= dividido-igul
%= mdulo-igul
apacitacin 2005 KT ngeniera Electrnica SRL
55
Operadores de bits
& nd
&= nd-igul
| or
|= or-igul
~ negcin
! negcin
^ xor (o-exclusivo)
^= xor-igul