Você está na página 1de 14

MODELO DE SECCIN EXPOSICIN

IntroduccinalShellScript
Qu es Shell Script?
Shell Script es una serie de comandos de bash, u otro intrprete de comandos
de linux, escritas en un fichero de texto plano. Siendo similar a un proceso batch
de MS-DOS, pero con bastantes ms prestaciones.

Por qu utilizar Shell Script?


Porqu en shell script podemos tomar datos del usuario o de un fichero y
mostrar la salida por pantalla o por otro fichero.
Porqu nos permite crear nuestros propios comandos dentro del sistema.
Porqu permite ahorrar mucho tiempo en tareas repetitivas.
Porqu ayuda a la administracin de sistemas Unix en entornos
heterogneos.
QuesBash?
Bash es un intrprete de un lenguaje de rdenes compatible con sh que ejecuta
rdenes ledas desde la entrada estndar o desde un fichero. Bash tambin
incorpora caractersticas tiles tomadas de los shells de Korn y C (ksh y csh).

DEFINICIONES
Las siguientes definiciones se usan a travs del resto de este documento.
blanco Un espacio en blanco o una tabulacin (tab).
palabra Una secuencia de caracteres considerados por el shell como
una sola unidad. Tambin se conoce como un lexema
(token).

nombre Una palabra que consiste solamente en caracteres


alfanumricos y subrayados, y comienza con un carcter
alfabtico o un subrayado. Tambin se llama identificador.

metacarcter Un carcter que, cuando no est entrecomillado, separa


palabras. Uno de los siguientes:
| & ; ( ) < > espacio tab

1
MODELO DE SECCIN EXPOSICIN

EXPANSIONES
La expansinserealizaenla lneade rdenesuna vezque la
ordenhasidodivididaenpalabras.
Haysieteclasesdeexpansin:
1. expansindellaves,
2. expansindetilde,
3. expansindeparmetroyvariable,
4. sustitucindeorden,
5. expansinaritmtica,
6. divisindepalabrasy,
7. expansindenombredecamino.
El ordendeaplicacindedichasexpansioneseselmismoque
figuraenlalistaanterior,esdecir:expansindellaves,detilde,de
parmetro,variableyaritmtica,ysustitucindeorden(hechasde
izquierdaaderecha),divisindepalabras,yexpansindenombre
decamino.
Ensistemasquepuedanadmitirla,hayunaexpansinadicional
disponible:sustitucindeproceso.

NOTA: Slolaexpansindellaves,divisindepalabras,y
expansindenombredecamino,puedencambiarelnmero
depalabrasdelaexpansin;lasotrasexpandenunapalabra
simpleaotrapalabrasimple.Lasnicasexcepcionesaesto
son las expansiones de $@ y ${nombre[@]} que
expanden arrays y por tanto dependen del nmero de
elementosdelmismo.

Expansindenombredecamino

Trasladivisindepalabras,amenosquelaopcinfestpuesta,
bashexaminacadapalabrabuscandoloscaracteres*,?y[.Si
uno de estos caracteres aparece, entonces la palabra se
consideracomounpatrn,ysereemplazaporunalistaordenada
alfabticamente de nombresdeficheros que concuerden con el
patrn.

Si no se encuentran nombres de ficheros concordantes, y la


opcindelshellnullglobestdeshabilitada,lapalabrasedejatal
cual.

2
MODELO DE SECCIN EXPOSICIN

Si la opcin nullglob est puesta, y no ha habido ninguna


concordancia,lapalabraseelimina.

Silaopcindelshellnocaseglobestpuesta,labsquedadela
concordanciaserealizasinimportarsiloscaracteresalfabticos
sonletrasmaysculasominsculas.

Cuandounpatrnseusaparaexpansindenombredecamino,el
carcter.alprincipiodeunnombreoinmediatamentedespus
deunabarrainclinadadebeconcordarexplcitamente,amenos
queestpuestalaopcindelshelldotglob./Enlaconcordanciade
unnombredecamino,elcarcterdebarrainclinadadebesiempre
coincidirexplcitamente.Enotroscasos,elcarcter.nosetrata
deformaespecial.Vealadescripcindeshoptenelmanual(man
shopt)paraunadescripcindelasopcionesdelshellnocaseglob,
nullglob,ydotglob.

LavariabledelshellGLOBIGNOREpuedeutilizarsepararestringir
elconjuntodenombresdeficherosqueconcuerdenconunpatrn.
Si GLOBIGNORE est definido, cada nombre de fichero
concordante que tambin coincida con uno de los patrones en
GLOBIGNOREsequitadelalistadeconcordancias.Losnombres
defichero.y..nuncasontenidosencuenta,inclusocuando
GLOBIGNOREestpuesto.Sinembargo,definirGLOBIGNORE
tieneelefectodeactivarlaopcindelshelldotglob,demodoque
todos los otros nombres de fichero que comiencen con un .
concordarn.Paraobtenerelcomportamientoantiguodenohacer
casodenombresdeficherosquecomienzanconun.,hagaque
.*seaunodelospatronesdeGLOBIGNORE.Laopcindotglob
estdeshabilitadacuandoGLOBIGNOREnoestdefinido.

Expansindellaves

La expansin de llaves es un mecanismo por el cual pueden


generarse cadenas arbitrarias. Este mecanismo es similar a la
expansindenombredecamino,perolosnombresdeficherosno
necesitanexistir.Lospatronesaserexpandidosconlaexpansin
dellavestomanlaformadeunprembuloopcionalseguidopor
unaseriedecadenasseparadasporcomasentreunpardellaves,
seguido por un post scriptum opcional. El prembulo sirve de
prefijoacadacadenadeentrelasllaves,yelpostscriptumse
aadeluegoacadacadenaresultante,expandiendodeizquierda
aderecha.

3
MODELO DE SECCIN EXPOSICIN

echoes{un,una,unos}prueba

Las expansiones de llaves pueden anidarse. Los resultados de


cadacadenaexpandidanoseordenan;sepreservaelordende
izquierdaaderecha.Porejemplo,a{d,c,b}eseexpandeaadeace
abe.

Laexpansindellavesserealizaantesquecualquierotra,y
cualquiercarcterespecialparaotrasexpansionessepreservaen
el resultado. Es estrictamente textual. Bash no aplica ninguna
interpretacin sintctica al contexto de la expansin ni al texto
entrelasllaves.

Una expansin de llaves correctamente formada debe contener


llavesdeaperturaycierresinentrecomillar,yporlomenosuna
coma sin entrecomillar. Cualquier expansin de llaves formada
incorrectamentesedejatalcual.Una{o,puedeprotegersecon
unabarrainvertidaparaevitarqueseaconsideradacomopartede
unaexpansindellaves.

Estaconstruccinseempleanormalmentecomounaabreviatura
cuandoelprefijocomndelascadenasageneraresmayorque
enelejemplodeantes:

mkdir/usr/local/src/bash/{old,new,dist,bugs}o

ls/usr/{doc/{l*,at},lib/{tc*,libnss*}}

Expansindetilde

Si una palabra comienza con un carcter tilde de la sin


entrecomillar(~),todosloscaracteresqueprecedanalaprimera
barrainclinadasinentrecomillar(otodosloscaracteres,sinohay
ninguna barra inclinada sin proteger), se consideran un prefijo
tilde. Si ninguno de los caracteres en el prefijotilde estn
protegidos,loscaracteresenelprefijotildequesiguenalatildese
tratancomounposiblenombredeentradadeusuario(login).Si
estenombredeentradaeslacadenavaca,latildesereemplaza
con el valor del parmetro del shell HOME. Si HOME no est
definida,sesustituyeensulugareldirectoriodetrabajoinicialdel
usuarioqueestejecutandoelshell.Deotraforma,elprefijotilde
sereemplazaconeldirectoriodetrabajoinicial(decasa)asociado
conelnombredeentradaespecificado.
4
MODELO DE SECCIN EXPOSICIN

echo~rootoecho~usuario1

ls~/midirols~root/sudir

Sielprefijotildeesun~+,elvalordelavariabledelshellPWD
reemplazaalprefijotilde.Sielprefijotildeesun~,elvalordela
variabledelshellOLDPWD,siestdefinido,sesustituye.Silos
caracteresquesiguenalatildeenelprefijotildeconsistenenun
nmeroN,prefijadoopcionalmenteporun+oun,elprefijotilde
se reemplaza con el elemento correspondiente de la pila de
directorios,comolomostraralaordeninternadirsllamadaconel
prefijotildecomoargumento.Siloscaracterestraslatildeenel
prefijotildeconsistenenunnmerosinun+niiniciales,se
supone+.
Sielnombredeentradaesinvlido,osilaexpansindetildefalla,
lapalabrasedejatalcual.
Acadaasignacindevariablesecompruebasihayprefijostilde
sinentrecomillarinmediatamentetrasun:oun=.Enestoscasos,
laexpansindetildetambintienelugar.Consecuentemente,uno
puede usar nombres de ficheros con tildes en asignaciones a
PATH, MAILPATH, y CDPATH, y el shell asigna el valor
expandido.

Expansindeparmetro

Elcarcter$introducelaexpansindeparmetro,sustitucinde
orden,oexpansinaritmtica.Elnombredeparmetroosmbolo
a ser expandido puede estar encerrado entre llaves, que son
opcionalesperosirvenparaprotegeralavariableenlaexpansin
decaracteresquelasiganypuedaninterpretarsecomopartede
sunombre.
Cuando se empleen llaves, la de cierre es la primera } no
protegidaconunabarrainvertidaoenunacadenaentrecomillada,
ynodentrodeunaexpansinaritmticaempotrada,sustitucinde
orden,oexpansindeparmetro.

${parmetro}

Se sustituye el valor de parmetro. Se requieren llaves cuando


parmetro es un parmetro posicional de ms de un dgito, o
cuando parmetro viene seguido por un carcter que no debe
interpretarsecomopartedesunombre.
5
MODELO DE SECCIN EXPOSICIN

Si el primer carcter de parmetro es un signo de cierre de


exclamacin,seintroduceunniveldeindireccindevariable.Bash
emplea el valor de la variable formada a partir del resto de
parmetrocomoelnombredelavariable;luego,estavariablese
expandeyesevalorseempleaenelrestodelasustitucin,envez
delpropiovalorde parmetro.Esto seconocecomoexpansin
indirecta.

X=HOME;echo${!X}
>/home/usuario

En cada uno de los casos anteriores, palabra est sujeta a


expansindetilde,expansindeparmetro,sustitucindeorden,
y expansin aritmtica. Cuando no se realiza la expansin de
subcadena,bashcompruebasiunparmetroestsindefiniroes
nulo;siomitimoslosdospuntoslacomprobacinsloesparala
nodefinicindelparmetro.

${parmetro:palabra}

Emplearvalorespredeterminados.Siparmetronoestdefinidoo
estvaco,sesustituyelaexpansindepalabra.Deotromodo,se
sustituyeelvalordeparmetro.

${parmetro:=palabra}

Asignarvalorespredeterminados.Siparmetronoestdefinidoo
esnulo,laexpansindepalabraseasignaaparmetro.Luego,el
valor de parmetro se sustituye. No se puede asignar nada de
estamaneraalosparmetrosposicionalesnialosespeciales.

${parmetro:?palabra}

Muestraunerrorsinoestdefinidooestvaco.Siparmetroes
nuloonoestdefinido,laexpansindepalabra(ounmensajea
tal efecto si palabra no est presente) se escribe en la salida
estndardeerroresyelshell,sinoesinteractivo,acaba.Deotra
manera,sesustituyeelvalordeparmetro.

X=;echo${X:?malmalmal...adios}
6
MODELO DE SECCIN EXPOSICIN

${parmetro:+palabra}

Emplearunvaloralternativo.Siparmetroestvacoonoest
definido, no se sustituye nada; de otro modo, se sustituye la
expansindepalabra.

${parmetro:desplazamiento}
${parmetro:desplazamiento:longitud}

Expansindesubcadena.Expandehasta longitud caracteresde


parmetro, empezando en los caracteres especificados por
desplazamiento. Si se omite la longitud, se expande a la
subcadenadeparmetro,empezandoenelcarcterespecificado
por desplazamiento. longitud y desplazamiento son expresiones
aritmticas(veaEVALUACINARITMTICAmsabajo).longitud
debe evaluarse a un nmero mayor o igual a cero. Si
desplazamientoseevalaaunnmeromenorquecero,elvalor
se emplea como un desplazamiento desde el final del valor de
parmetro.Siparmetroes@,elresultadoeslongitudparmetros
posicionalesempezandoendesplazamiento.Siparmetroesun
nombre de vector indexado por @ o *, el resultado es longitud
miembros del vector empezando con $
{parmetro[desplazamiento]}. La indexacin de la subcadena
empieza por cero a menos que se empleen los parmetros
posicionales,encuyocasoempiezapor1.

X="Cucurbitacea";echo${X:2:5}

./ejemplo_expansion1.shabcdef

./ejemplo_expansion2.sh

${#parmetro}

Sesustituyelalongitudencaracteresdelvalordeparmetro.Si
parmetroes*o@,elvalorsustituidoeselnmerodeparmetros
posicionales.Siparmetroesunnombredevectorindexadopor*
o@,elvalorsustituidoeselnmerodeelementosenelvector.

${parmetro#palabra}
${parmetro##palabra}

7
MODELO DE SECCIN EXPOSICIN

Lapalabraseexpandeparaproducirunpatrnlomismoqueen
unaexpansindenombredecamino.Sielpatrnconcuerdacon
el principio del valor de parmetro, entonces el resultado de la
expansineselvalorexpandidodeparmetroconelpatrnms
cortoqueconcuerde(elcaso#)oconelpatrnmslargoque
concuerde (el caso ##) eliminado. Si parmetro es @ o *, la
operacin de borrado del patrn se aplica a cada parmetro
posicional por turnos, y la expansin es la lista resultante. Si
parmetroesunavariablevectorindexadacon@o*,laoperacin
de borrado del patrn seaplica acada miembro del vectorpor
orden,ylaexpansineslalistaresultante.

X=$(pwd);echo${X##*/}

${parmetro%palabra}
${parmetro%%palabra}

Lapalabraseexpandeparaproducirunpatrnjustocomoenla
expansindenombredecamino.Sielpatrnconcuerdaconuna
porcin del final del valor expandido de parmetro, entonces el
resultadodelaexpansineselvalorexpandidodeparmetrocon
elpatrnmscortoqueconcuerde(elcaso%)oelmslargo(el
caso %%) borrado. Si parmetro es @ o *, la operacin de
borrado del patrn se aplica a cada parmetro posicional por
orden,ylaexpansineslalistaresultante.Siparmetroesuna
variablevectorindexadapor@o*,laoperacindeborradodel
patrn se aplica a cada miembro del vector por orden, y la
expansineslalistaresultante.

${parmetro/patrn/cadena}
${parmetro//patrn/cadena}

Elpatrnseexpandeparaproducirunpatrnjustocomoenla
expansin de nombre de camino. parmetro se expande y la
concordanciamslargadepatrncontraestevalorsereemplaza
por cadena. En la primera forma, slo se reemplaza la primera
concordancia. La segunda forma hace que todas las
concordancias de patrn se reemplacen con cadena. Si patrn
empiezapor#,debeconcordarconelprincipiodelacadena.Si
patrnempiezapor%,debeconcordarconelfinaldelacadena.
Sicadenaestvaca,lasconcordanciasdepatrnseborranyel/
que sigue al patrn puede omitirse. Si parmetro es @ o *, la
operacindesustitucinseaplicaacadaparmetroposicionalpor
orden,ylaexpansineslalistaresultante.Siparmetroesuna
variablevectorindexadapor@o*,laoperacindesustitucinse
8
MODELO DE SECCIN EXPOSICIN

aplicaacadamiembrodelvectorpororden,ylaexpansinesla
listaresultante.

Sustitucindeorden

La sustitucin de orden permite a la salida de una orden


reemplazaralnombredelaorden.Haydosformas:

$(orden)
u
orden

Bash realiza la expansin ejecutando orden y reemplazando la


sustitucindeordenconlasalidaestndardelaorden,quitando
lossaltosdelneafinales.Lossaltosdelneaempotradosnose
borran, pero pueden ser eliminados durante la divisin de
palabras. La sustitucin de orden $(cat fichero) puede
reemplazarseporloequivalenteperomsrpido$(<fichero).

Cuandoseemplealaformadesustitucinalviejoestiloconlas
comillasinversas,labarrainvertidamantienesusignificadoliteral
exceptocuandoesseguidapor$,,o\.Laprimeracomillainversa
no precedida por una barra invertida termina la sustitucin de
orden.Cuandoseemplealaforma$(orden),todosloscaracteres
entre los parntesis forman parte de la orden; ninguno se trata
especialmente.

Lassustitucionesdeordenpuedenanidarse.Paraanidarcuando
se emplee la forma de comillas inversas, proteja las comillas
inversasinternasconbarrasinversas.

Silasustitucinaparecedentrodelasdoblescomillas,ladivisin
de palabras y la expansin de nombres no se realiza en los
resultados.

Expansinaritmtica

Laexpansinaritmticapermitelaevaluacindeunaexpresin
aritmtica y la sustitucin del resultado. El formato para la
expansinaritmticaes:
9
MODELO DE SECCIN EXPOSICIN

$((expresin))

Laexpresinsetratacomosiestuvieraentrecomillasdobles,pero
un signo de doble comilla dentro de los parntesis no se trata
especialmente.Todosloslexemasenlaexpresinestnsujetosa
expansin de parmetro, expansin de cadena, sustitucin de
orden, y eliminacin de comillas. Las sustituciones aritmticas
puedenanidarse.

Divisindepalabras

El shell examina los resultados de la expansin de parmetro,


sustitucin de orden y expansin aritmtica que no ocurrieron
dentrodecomillasdoblespararealizarladivisindepalabras.

ElshelltratacadacarcterdeIFScomoundelimitador,ydivide
losresultadosdelasotrasexpansionesenpalabrasseparadaspor
estos caracteres. Si IFS no est definido, o su valor es
exactamente <espacio><tab><nuevalnea>, el valor
predeterminado, entonces cualquier secuencia de caracteres de
IFS sirve para delimitar palabras. Si IFS tiene algn otro valor,
entonces las secuencias de los caracteres blancos espacio y
tabulador no se tienen en cuenta al principio y al final de la
palabra,siemprequeelcarcterdeespacioenblancoestenel
valordeIFS(uncarcterdeespacioenblancodeIFS).Cualquier
carcterenIFSquenoseaespacioenblancodeIFS,juntocon
cualquier carcter de espacio en blanco adyacente de IFS,
delimitauncampo.Unasecuenciadecaracteresdeespacioen
blancodeIFStambinsetratacomoundelimitador.Sielvalorde
IFSesnulo,noserealizaladivisindepalabras.
Los argumentos nulos explcitos (" o ) se mantienen. Los
argumentos nulos no protegidos implcitos, resultantes de la
expansindeparmetrosquenotienenvalores,seeliminan.Siun
parmetrosinningnvalorseexpandedentrodecomillasdobles,
elresultadoesunargumentonulo,yesmantenido.
Observequesinohayexpansin,tampocoserealizaladivisin
depalabras.

Eliminacindecomillas

Tras las expansiones precedentes, todas las ocurrencias no

1
0
MODELO DE SECCIN EXPOSICIN

entrecomilladasdeloscaracteres\,,yquenoresultendeuna
delasexpansionesanteriores,seeliminan.

Patrones

Cualquier carcter que aparezca en un patrn, aparte de los


especialesdescritosmsadelante,concuerdaconsigomismo.El
carcter NUL no puede estar en un patrn. Los caracteres de
patrn especiales deben protegerse si han de concordar
literalmenteconsigomismos.
Los caracteres de patrn especiales tienen los siguientes
significados:
*
Concuerdaconcualquiercadenadecaracteres,incluidala
cadenavaca.
?
Concuerdaconunsolocarctercualquiera.

[...]

Concuerdaconunodeloscaracteresentrecorchetes.Un
pardecaracteresseparadosporunsignomenosdenotaun
rango; cualquier carcter lxicamente entre esos dos,
incluidos,concuerda.Sielprimercarctertrasel[esun!o
un^,entonceslaconcordanciaesconcualquiercarcterde
los que no estn entre los corchetes. Un puede
representarse para la concordancia incluyndolo como el
primeroltimocarcterdelconjunto.Un]puedehacerse
concordar incluyndolo como el primer carcter del
conjunto.

Dentro de [ y ], se pueden especificar clases de caracteres


mediantelasintaxis[:clase:],dondeclaseesunadelassiguientes
clasesdefinidasenelestndarPOSIX.2:alnumalphaasciiblank
cntrldigitgraphlowerprintpunctspaceupperxdigit.

Una clase de caracteres concuerda con cualquier carcter que


pertenezcaaesaclase.
Dentrode[y],unaclasedeequivalenciasepuedeespecificar
empleando la sintaxis [=c=], que concuerda con todos los
caracteresconelmismopesodeclasificacin(talcomolodefina
lalocalizacinencurso)queelcarcterc.
Dentrode[y],lasintaxis[.smbolo.]concuerdaconelsmbolode
clasificacinsmbolo.
Si la opcin delshellextglob se activa usando laorden interna
shopt,sereconocenalgunosoperadoresdepatronesextendidos.
1
1
MODELO DE SECCIN EXPOSICIN

Enlasiguientedescripcin,unalistapatrnesunalistadeunoo
ms patrones separados por un |. Se pueden formar patrones
compuestosusandounoomsdelossiguientessubpatrones:

?(listapatrn)
Concuerdaconningunaounaocurrenciadelospatrones
dados
*(listapatrn)
Concuerdaconningunaomsocurrenciasdelospatrones
dados
+(listapatrn)
Concuerda con una o ms ocurrencias de los patrones
dados
@(listapatrn)
Concuerdaexactamenteconunodelospatronesdados
!(listapatrn)
Concuerda con cualquier cosa excepto con uno de los
patronesdados

FUNCIONES
[function]nombre(){lista;}

Estodefineunafuncinllamadanombre.Elcuerpodelafuncin
eslalistaderdenesentre{y}.Estalistaseejecutacadavez
queseespecificanombrecomoelnombredeunaordensimple.El
estadodesalidadeunafuncineseldelaltimaordenejecutada
enelcuerpo.

Lasfuncionesseejecutanenelcontextodelshellencurso;nose
creaningnnuevoprocesoparainterpretarlas(encontrasteconla
ejecucindeunguindelshell).Cuandounafuncinseejecuta,
los argumentos de la funcin se convierten en los parmetros
posicionales durante su ejecucin. El parmetro especial # se
actualiza para reflejar el cambio. El parmetro posicional 0
permanece intacto. Todos los dems aspectos del entorno de
ejecucindelshellsonidnticosentreunafuncinyquienlallama
conlaexcepcindequelatrampaDEBUG(vealadescripcinde
laordeninternatrapbajoRDENESINTERNASDELSHELLms
adelante)nosehereda.
Variables locales a la funcin se pueden declarar con la orden
interna local. Normalmente, las variables y sus valores se
comparten entre la funcin y quien la llama, como variables
globales.

1
2
MODELO DE SECCIN EXPOSICIN

Siseejecutalaordeninternareturnenunafuncin,steseacaba
ylaejecucinsereanudaconlasiguienteordentraslallamadaa
la funcin.Cuando una funcin se completa, losvalores de los
parmetrosposicionalesyelparmetroespecial#serestaurana
losvaloresquetenanantesdelaejecucindelafuncin.
Losnombresdefuncinysusdefinicionespuedenlistarseconla
opcinfdelasrdenesinternasdeclareotypeset.LaopcinF
de declare o typeset listar solamente los nombres de las
funciones. Las funciones pueden exportarse de modo que los
subshellslastengandefinidasautomticamenteconlaopcinfde
laordeninternaexport.
Lasfuncionespuedenserrecursivas.Noseimponeningnlmite
enelnmerodellamadasrecursivas.

VISIBILIDADDEVARIABLES

declare[afFirx][p][nombre[=valor]]
typeset[afFirx][p][nombre[=valor]]

Declaran variables o les dan atributos. Si no se dan nombres,


entonces muestran los valores de las variables. La opcin p
mostrar los atributos y valores de cada nombre. Cuando se
emplee p, otras opciones que se hayan dado no se tienen en
cuenta.LaopcinFinhibelapresentacindelasdefinicionesde
funciones;slosemuestransusnombresyatributos.LaopcinF
implica f. Se pueden emplear las siguientes opciones para
restringirlasalidaavariablesconelatributoespecificadoopara
daratributosavariables:
a
Cadanombreesunavariablevector(veaVectoresarriba).
f
Usarsolamentenombresdefunciones.
i
Lavariablesetratacomounentero;serealizalaevaluacin
aritmtica(veaEVALUACINARITMTICA)cuandoala
variableseleasigneunvalor.
r
Hacequenombresseandelecturaexclusiva.Aestos
nombresnoselespuedenasignarvalorespormediode
subsiguientesasignaciones,nisepuedeanularsudefinicin
conunset.
x
Marcanombresparalaexportacinardenessubsecuentes
atravsdelentorno.
1
3
MODELO DE SECCIN EXPOSICIN

Usar+envezdedesactivaelatributoenvezdeactivarlo,con
la excepcin de que no puede emplearse +a para destruir una
variablevector.Cuandoseusaenunafuncin,hacelocalcada
nombre,comoconlaordeninternalocal.Elvalorderetornoes0a
menosqueseencuentreunaopcininvlida,seintentedefiniruna
funcinutilizandoffuu=bar",seintenteasignarunvalorauna
variable de lectura exclusiva, se intente asignar un valor a una
variablevectorsinemplearlasintaxisdeasignacincompuesta
(vea Vectores arriba), uno de los nombres no sea un nombre
vlido de variable del shell, se intente desactivar el estado de
lectura exclusiva para una variable de slo lectura, se intente
desactivar el estado de vector para una variable vector, o se
intentemostrarunafuncinnoexistenteconf.

local[nombre[=valor]...]

Paracadaargumento,secreaunavariablelocalllamadanombre,
yseleasignaelvalorvalor.Cuandolocalseempleadentrode
una funcin, hace que la variable nombre tenga una visibilidad
restringidaaesafuncinysushijas.Sinoperandos,localescribe
enlasalidaestndarunalistadelasvariableslocales.Esunerror
emplearlocalfueradeunafuncin.Elestadoderetornoes0a
menosquelocalseusefueradeunafuncin,osedunnombre
invlido.

1
4

Você também pode gostar