https://foro.gambas-es.org/viewtopic.php?f=6&t=4438
-----------------------------------
Shell
Jueves, 05 Marzo 2015, 19:56

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.

[code linenumbers=false syntax=bash]
#!/bin/bash

# Ejemplo de bucle Until

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

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

[code linenumbers=false syntax=bash]
#!/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
[/code]

$# 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:

[code linenumbers=false syntax=bash]
echo "El argumento vale: "$"$variable"
[/code]

La salida es esta:
[quote]
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
[/quote]

Si hago esto:
[code linenumbers=false syntax=bash]
echo "El argumento vale: "$$variable
[/code]

Aun más raro, mostrando un valor.
[quote]
La variable vale:  3
El argumento vale: 3876variable
La variable vale:  2
El argumento vale: 3876variable
La variable vale:  1
El argumento vale: 3876variable
[/quote]

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

Saludos


-----------------------------------
Shell
Jueves, 05 Marzo 2015, 21:28

Re: Bucle Until Y Los Argumentos Posicionales
-----------------------------------
[quote]
Aun más raro, mostrando un valor.
[/quote]

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

[url=http://es.kioskea.net/faq/2140-bash-los-parametros]Los parámetros

Fuente:

http://es.kioskea.net

Podéis probar a hacer:

[code linenumbers=false syntax=bash]
echo $$
[/code]

[quote]
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
[/quote]

Saludos


-----------------------------------
Shell
Jueves, 05 Marzo 2015, 22:06

Re: Bucle Until Y Los Argumentos Posicionales
-----------------------------------
Lo he resuelto con un array.

[code linenumbers=false syntax=bash]
#!/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
[/code]

La salida fue:
[quote]
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
[/quote]

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

Saludos


-----------------------------------
shordi
Viernes, 06 Marzo 2015, 08:56

Re: Bucle Until Y Los Argumentos Posicionales
-----------------------------------
[quote]until [ $variable -lt 1 ];[/quote]

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?


-----------------------------------
Shell
Viernes, 06 Marzo 2015, 10:48

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.  :roll: 
Hay que bucear mucho para encontrar a veces las soluciones.

Saludos


