{"id":2588,"date":"2023-11-25T09:24:25","date_gmt":"2023-11-25T09:24:25","guid":{"rendered":"https:\/\/myvlcsys.com\/?p=2588"},"modified":"2023-12-10T09:22:02","modified_gmt":"2023-12-10T09:22:02","slug":"linux-shell-script-el-uso-de-las-variables","status":"publish","type":"post","link":"https:\/\/myvlcsys.com\/?p=2588","title":{"rendered":"LINUX: Shell Script. \u00abEl uso de las variables\u00bb."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En shell Script como en cualquier lenguaje de programaci\u00f3n, se pueden crear y utilizar variables, pero se suelen denominar como par\u00e1metros. Existen varios tipos de par\u00e1metros: <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Si el nombre es un n\u00famero se denominan par\u00e1metros posicionales.<\/li><li>Si el nombre es un car\u00e1cter especial se denominan par\u00e1metros especiales.<\/li><li>El resto se denominan simplemente variables.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a intentar detallar cada uno de estos tipos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-style:normal;font-weight:600\">1.Variables:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00f3lo definici\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\"><kbd><mark style=\"background-color:#000000\" class=\"has-inline-color has-white-color\">VAR=\"\"\nVAR=<\/mark><\/kbd><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Definici\u00f3n y\/o inicializaci\u00f3n\/modificaci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">VAR=valor<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expansi\u00f3n (acceso a valor)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">$VAR\n<strong>${<\/strong>VAR<strong>}<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eliminaci\u00f3n de la variable<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-white-color has-black-background-color has-text-color has-background\">unset VAR<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Debemos de tener en consideraci\u00f3n las siguientes observaciones al respecto:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Definici\u00f3n y uso:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las variables s\u00f3lo existen en el proceso shell en que son definidas (locales al proceso).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las variables s\u00f3lo son accesibles desde el momento de su definici\u00f3n hacia abajo del script, esto es, siempre deben definirse primero e invocarse despu\u00e9s (no puede usarse una variable que es definida m\u00e1s adelante). Pueden utilizarse tambi\u00e9n dentro de funciones aunque se hayan declarado fuera de ellas. En el est\u00e1ndar POSIX todas las variables son globales, aunque existen variantes (como bash) que permiten la creaci\u00f3n de variables locales a las funcione<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es importante tener en cuenta que las variables pueden ser creadas en el mismo momento que vayamos a hacer uso de de ellas, y no es necesario crear con anterioridad. Por lo cual primero hay que crear la variable y luego invocarla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si creamos una variable sin incianci\u00f3n, su valor por defecto ser\u00e1 el valor nulo (Variable= null)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con el comando&nbsp;<code>set<\/code>&nbsp;(sin argumentos) puede ver todas las variables (y funciones) definidas en el shell actual.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"367\" src=\"https:\/\/myvlcsys.com\/wp-content\/uploads\/2023\/11\/image-8-1024x367.png\" alt=\"\" class=\"wp-image-2591\" srcset=\"https:\/\/myvlcsys.com\/wp-content\/uploads\/2023\/11\/image-8-1024x367.png 1024w, https:\/\/myvlcsys.com\/wp-content\/uploads\/2023\/11\/image-8-300x108.png 300w, https:\/\/myvlcsys.com\/wp-content\/uploads\/2023\/11\/image-8-768x275.png 768w, https:\/\/myvlcsys.com\/wp-content\/uploads\/2023\/11\/image-8.png 1408w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Ejemplo del comando SET<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Nombrado:<\/strong> t\u00e9ngase en cuenta que Linux es&nbsp;<em>\u00abcase sensitive\u00bb<\/em>&nbsp;(sensible a may\u00fasculas y min\u00fasculas) en general, lo que incluye el nombre de las variable. As\u00ed,&nbsp;<code>VAR<\/code>&nbsp;y&nbsp;<code>var<\/code>&nbsp;ser\u00e1n tomadas como dos variables independientes . Para el nombre de una variable puede usarse :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>1er car\u00e1cter: una letra o el car\u00e1cter de subrayado&nbsp;<code>_<\/code>.<\/li><li>2\u00ba y posteriores caracteres: una letra, d\u00edgito o el car\u00e1cter de subrayado.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Iniciaci\u00f3n o Modificaci\u00f3n del valor de una variable:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>S\u00ed incluimos un espacio antes o despu\u00e9s de signo =, el shell interpretara que el nombre de una variable, y no como la asignaci\u00f3n de valor a tal variable.<\/li><li>El valor asignado a la variable, el shell los tomar\u00e1 como una cadena de caracteres.eres.<\/li><li>Si el valor de una variable contiene caracteres especiales, espacios, u otros elementos que puedan ser malinterpretados por el shell, es necesario que lo entrecomillemos o incluso incluir alg\u00fan valor de escape, si fuera necesario.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">4<strong>. Expansi\u00f3n de una variable uso de llaves: <\/strong>usaremos en nuestra sentencias los caracteres de {} justo tras las variable para a\u00f1adir m\u00e1s caracteres a la misma.<\/p>\n\n\n\n<p class=\"has-white-color has-black-background-color has-text-color has-background wp-block-paragraph\">echo \u00abMi variable es : ${var}1\u00bb<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-style:normal;font-weight:600\">2. Variables de entorno:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contienen informaci\u00f3n respecto al entorno de ejecuci\u00f3n. Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$USER&nbsp;<\/strong>contiene el nombre del usuario actual<\/li><li><strong>$PWD&nbsp;<\/strong>directorio de trabajo actual<\/li><li><strong>$<\/strong><strong>HOSTNAME&nbsp;<\/strong>nombre del ordenador<\/li><li><strong>$<\/strong><strong>LANG<\/strong>&nbsp;idioma del sistema<\/li><li><strong>$<\/strong><strong>OSTYPE&nbsp;<\/strong>tipo de sistema operativo<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Otras variables \u00fatiles:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n disponemos de unas variables que contienen informaci\u00f3n referente a la propia ejecuci\u00f3n del script. Son fundamentales las que hacen referencia al paso de par\u00e1metros (lo explicaremos m\u00e1s adelante).<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$0<\/strong>&nbsp;El nombre del script<\/li><li><strong>$$<\/strong>&nbsp;PID del proceso que se le ha asignado al script en ejecuci\u00f3n<\/li><li><strong>$?<\/strong>&nbsp;Resultado devuelto por el \u00faltimo proceso ejecutado.<\/li><li><strong>$n<\/strong>&nbsp;la informaci\u00f3n de un par\u00e1metro en concreto, siendo n un n\u00famero del par\u00e1metro<\/li><li><strong>$*<\/strong>&nbsp;todos los par\u00e1metros. Se presentan en una sola cadena de caracteres<\/li><li><strong>$@<\/strong>&nbsp;todos los par\u00e1metros. Es una lista con un elemento por cada par\u00e1metro recibido<\/li><li><strong>$#<\/strong>&nbsp;la cantidad de par\u00e1metros con los que se ha invocado el script. Ser\u00e1 una sola cifra<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>En shell Script como en cualquier lenguaje de programaci\u00f3n, se pueden crear y utilizar variables, pero se suelen denominar como par\u00e1metros. Existen varios tipos de par\u00e1metros: Si el nombre es&hellip; <\/p>\n","protected":false},"author":4,"featured_media":2426,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[10],"tags":[25,36,57,27,24],"class_list":["post-2588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-linux","tag-programacion-2","tag-shell-script","tag-sistemas","tag-terminal"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/posts\/2588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2588"}],"version-history":[{"count":12,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/posts\/2588\/revisions"}],"predecessor-version":[{"id":2643,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/posts\/2588\/revisions\/2643"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=\/wp\/v2\/media\/2426"}],"wp:attachment":[{"href":"https:\/\/myvlcsys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myvlcsys.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}