PDA

View Full Version : stampare gli argomenti di uno script


gepeppe
15-03-2008, 07:17
Scusate la banalità della richiesta, ma non riesco a capire come fare. Io ho questo script, che mi deve stampare il numero di argomenti che gli passo, non sò a priori quanti sono:

#!/bin/bash
i=1
while [ $i -le $# ]
do
echo $`echo $i`
i=$(( i+1 ))
doneEcco cosa stampa:
> ./script "uno" "due" "tre"
$1
$2
$3
io vorrei che echo nello script ricevesse 1 2 3 per poter poi stampare $1, $2 $3 cioè i valori degli argomenti 1 2 3 (uno due tre).

grazie

andbin
15-03-2008, 08:42
Con: eval echo \${$i}

gepeppe
15-03-2008, 08:57
Con: eval echo \${$i}

si grazie, funziona. Ma potresti spiegarmi "perchè funziona"? cioè eval cos'è e perchè hai messo \${$i} ?

andbin
15-03-2008, 09:20
si grazie, funziona. Ma potresti spiegarmi "perchè funziona"? cioè eval cos'è e perchè hai messo \${$i} ?eval semplicemente valuta ed esegue un comando. Ho messo \$ perché quel $ non deve essere interpretato come carattere speciale. Il $i invece viene espanso.

Supponiamo che $i valga 4, il comando diventa:

echo ${4}

Nota che ho messo { } perché senza le graffe potresti mettere solo 1 digit. Cioè echo $12 non fa affatto ciò che penseresti/vorresti (prendere il parametro numero 12) ma stampa il parametro 1 (quindi $1) e poi stampa un '2'.