Bucle Until Y Los Argumentos Posicionales


Objetivo: Bucle Until Y Los Argumentos Posicionales
Hola!.

Creando un bucle until, se me ocurrió que se podía mostrar los argumentos posicionales.
Ejemplo, primero hice un bucle que cuenta de 5 hasta 1.

#!/bin/bash

# Ejemplo de bucle Until

variable=5
until [ $variable -lt 1 ];
do
echo "variable vale: " $variable
let variable-=1
done


Entonces usando el mismo programa quise a la vez mostrar los argumentos posicionales, pero no me funciona (por ahora).

#!/bin/bash

# Ejemplo de bucle Until
# variable almacena el número de argumentos

variable=$#
until [ $variable -lt 1 ];
do
echo "La variable vale: " $variable
# Esta linea os muestro los cambios abajo para que veáis los efectos que hace
let variable-=1
done


$# Nos da el número de argumentos pasados
Si sabemos que los argumentos posicionales son $0 $1 $1 $3, que son los valores que le pasamos como argumentos a nuestro
script.

Si hago esto:

echo "El argumento vale: "$"$variable"


La salida es esta:
Citar:

jack@claudio:~/Scripts/bucles$ ./BucleUntil2.sh pepe juan manuel
La variable vale: 3
El argumento vale: 3
La variable vale: 2
El argumento vale: 2
La variable vale: 1
El argumento vale: 1


Si hago esto:
echo "El argumento vale: "$$variable


Aun más raro, mostrando un valor.
Citar:

La variable vale: 3
El argumento vale: 3876variable
La variable vale: 2
El argumento vale: 3876variable
La variable vale: 1
El argumento vale: 3876variable


Continuare buscando información.
Creo que me toca visitar videotutoriales también.

Saludos

Objetivo: Re: Bucle Until Y Los Argumentos Posicionales
Citar:

Aun más raro, mostrando un valor.


$$ nos da el PID del Shell que ejecuta el Script. Por eso sale ese número

Los parámetros

Fuente:

http://es.kioskea.net

Podéis probar a hacer:

echo $$


Citar:

jack@claudio:~/Scripts/bucles$ ps
PID TTY TIME CMD
4265 pts/2 00:00:00 bash
5365 pts/2 00:00:00 ps
jack@claudio:~/Scripts/bucles$ echo $$
4265


Saludos

última edición por Shell el Jueves, 05 Marzo 2015, 21:28; editado 1 vez
Objetivo: Re: Bucle Until Y Los Argumentos Posicionales
Lo he resuelto con un array.

#!/bin/bash

# variable almacena el número de argumentos
variable=$#

# El contenido de argumentos debe ir entre paréntesis
argumentos=($*)

# Declaramos argumentos como un array
declare -a argumentos

until [ $variable -lt 1 ];
do
echo "La variable vale: " $variable
echo "El argumento vale: " ${argumentos[$variable-1]}
let variable-=1
done


La salida fue:
Citar:

jack@claudio:~/Scripts/bucles$ ./BucleUntil3.sh pepe juan manolo
La variable vale: 3
El argumento vale: manolo
La variable vale: 2
El argumento vale: juan
La variable vale: 1
El argumento vale: pepe


Tengo que ver como se hace para que las cadenas queden mejor presentadas.

Saludos

última edición por Shell el Jueves, 05 Marzo 2015, 22:07; editado 1 vez
Objetivo: Re: Bucle Until Y Los Argumentos Posicionales
Citar:
until [ $variable -lt 1 ];


Sin llegar al fondo del tema, es lógico que $variable te de número de argumento... si $variable fuese pepe ¿Cómo ibas a compararlo con 1?

Perfil MP  
Objetivo: Re: Bucle Until Y Los Argumentos Posicionales
Shordi:

Efectivamente en este caso, variable es un número.
Por eso lo asigne a variable, el número de argumentos que se le pasa al script. $#

El problema realmente es hacer que con un bucle distinto a For, mostrar los parámetros.
El For del Shell, no es el típico For. Es un For Each. Trabaja sobre argumentos, no sobre números.

Por otro lado tu sabes que $0 es el nombre del script y después de esté. $1,$2,$3...son los argumentos.

Realmente llevo 3 días con estas cosas. Estoy algo verde. Siempre he tirado de gambas para hacer estas cosas.
No es fácil dar los primeros pasos. Idea tenía, pero no suelo usar Scripting Shell, es como si le quitase
protagonismo a gambas. Nos acostumbramos a hacer las cosas de una manera, cuando existen siempre
alternativas. Como siempre, el problema del tiempo es obvio

Aprender esto, me ha llevado a unos día a dejar estudiar Python y gambas, claro.
Demasiados frentes abiertos. Aunque no me canso de hacerlo.
Hay que bucear mucho para encontrar a veces las soluciones.

Saludos

última edición por Shell el Viernes, 06 Marzo 2015, 10:50; editado 1 vez

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0972s (PHP: -22% SQL: 122%)
Consultas SQL: 26 - Debug off - GZIP Activado