{"id":691,"date":"2020-04-15T09:00:53","date_gmt":"2020-04-15T07:00:53","guid":{"rendered":"http:\/\/programaraciegas.net\/?p=691"},"modified":"2020-04-10T11:26:31","modified_gmt":"2020-04-10T09:26:31","slug":"como-recoger-parametros-de-la-linea-de-comandos-en-un-script-de-swift","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=691","title":{"rendered":"C\u00f3mo recoger par\u00e1metros de la l\u00ednea de comandos en un script de Swift"},"content":{"rendered":"<p>Como pudimos aprender en el art\u00edculo sobre <a href=\"http:\/\/www.tyflosaccessiblesoftware.com\/programaraciegas\/?p=616\">Ejecutar scripts de Swift desde la terminal de MacOS<\/a> podemos crear peque\u00f1os programas que realicen operaciones para nosotros.<\/p>\n<p>En este art\u00edculo aprenderemos a recoger par\u00e1metros desde la l\u00ednea de comandos para poder crear scripts m\u00e1s personalizables.<\/p>\n<p><!--more--><\/p>\n<h2>Script de saludo personalizado<\/h2>\n<p>Crearemos un peque\u00f1o script que nos saludar\u00e1 con el nombre que le pasemos como par\u00e1metro. Para ello crearemos un script de Swift llamado <em>saludame.swift<\/em> con el siguiente c\u00f3digo:<\/p>\n<pre><code>\r\nimport Cocoa\r\n\r\nfunc getNombreDesdeParametros() -> String {\r\n    let numeroDeparametros = CommandLine.arguments.count\r\n    var nombreRecogido = \"\"\r\n    for indice in 1..<numeroDeparametros {\r\n        nombreRecogido = \"\\(nombreRecogido) \\(CommandLine.arguments[indice])\"\r\n    }\r\n    return nombreRecogido\r\n}\r\n\r\nprint(\"Hola \\(getNombreDesdeParametros())!\")\r\n<\/code><\/pre>\n<p>Una vez escrito el script si en la terminal ejecut\u00e1semos la siguiente l\u00ednea:<\/p>\n<p><code>saludame.swift Fulano de Tal<\/code><\/p>\n<p>El script nos responder\u00eda escribiendo en la pantalla de la Terminal el siguiente texto:<\/p>\n<pre>\r\nHola Fulano de Tal!\r\n<\/pre>\n<h3>El script en detalle<\/h3>\n<p>En este script realizamos las siguientes operaciones:<\/p>\n<ul>\n<li>Importamos el framework Cocoa para poder realizar operaciones propias de una aplicaci\u00f3n MacOS<\/li>\n<li>Declaramos la funci\u00f3n <em>getNombreDesdeParametros()<\/em> que devuelve una variable de tipo String<\/li>\n<li>Escribimos nuestro saludo por pantalla<\/li>\n<\/ul>\n<p>El peso de este script est\u00e1 en la funci\u00f3n <em>getNombreDesdeParametros()<\/em> que explicaremos ahora en detalle l\u00ednea a l\u00ednea.<\/p>\n<p>En <code>let numeroDeparametros = CommandLine.arguments.count<\/code> declaramos una constante llamada <em>numeroDeparametros<\/em> que consulta a <strong>CommandLine.arguments<\/strong> cu\u00e1ntos par\u00e1metros ha pasado el usuario a la hora de llamar al script.<\/p>\n<p>En la l\u00ednea <code>var nombreRecogido = \"\"<\/code> declaramos la variable <em>nombreRecogido<\/em> y la inicializamos con valor de cadena de texto vac\u00eda. Esta variable la utilizaremos para ir recogiendo cada uno de los par\u00e1metros y agruparlos en una sola cadena de texto.<\/p>\n<p>En la l\u00ednea <code>for indice in 1..<numeroDeparametros<\/code> declaramos un bucle que ir\u00e1 desde el valor 1 hasta el n\u00famero de par\u00e1metros que hayamos pasado al script. Esto har\u00e1 que el c\u00f3digo encerrado entre llaves se ejecute una y otra vez hasta completar el bucle.<\/p>\n<p>Dentro del bloque de c\u00f3digo a ejecutar por el bucle encontramos la l\u00ednea <code>nombreRecogido = \"\\(nombreRecogido) \\(CommandLine.arguments[indice])\"<\/code> que actualiza el valor de la variable <em>nombreRecogido<\/em> al valor que ya hab\u00eda seguido del nuevo par\u00e1metro que est\u00e1 recogiendo el bucle.<\/p>\n<p>Por \u00faltimo la l\u00ednea <code>return nombreRecogido<\/code> retorna el valor final de la variable <em>nombreRecogido<\/em> como valor de la funci\u00f3n.<\/p>\n<h3>CommandLine.arguments en detalle<\/h3>\n<p><strong>CommandLine.arguments<\/strong> es un Array de cadenas de texto que contiene todo el texto que se ha pasado como par\u00e1metro a la hora de llamar al script<\/p>\n<p>CommandLineArguments siempre tiene al menos un par\u00e1metro en la posici\u00f3n 0 del script. En esta posici\u00f3n 0 se almacena el nombre de nuestro script ya que es el primer elemento de la l\u00ednea de comandos a la hora de llamar a nuestro script. Si escribiesemos la siguiente l\u00ednea de c\u00f3digo se escribir\u00eda en la Terminal el nombre de nuestro fichero de script:<\/p>\n<pre><code>\r\nprint(CommandLine.arguments[0])\r\n<\/code><\/pre>\n<p>Por pantalla saldr\u00eda el texto: <em>saludame.swift<\/eM<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como pudimos aprender en el art\u00edculo sobre Ejecutar scripts de Swift desde la terminal de MacOS podemos crear peque\u00f1os programas que realicen operaciones para nosotros. En este art\u00edculo aprenderemos a recoger par\u00e1metros desde la l\u00ednea de comandos para poder crear scripts m\u00e1s personalizables.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,258],"tags":[82,259],"class_list":["post-691","post","type-post","status-publish","format-standard","hentry","category-macos-x","category-swift","tag-script","tag-swift"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=691"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/691\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}