PDA

View Full Version : [bash] shift del contenuto di una variabile testuale


]DaLcA[
13-09-2006, 11:26
Sto scrivendo uno script ed è necessario effettuare uno shift del contenuto di una variabile non numerica. In pratica mi servirebbe un comando (o del codice) che permetta di eseguire quello che fa il comando shift (lui lo fa con variabili contenenti liste di numeri).

Nel mio caso ho una variabile che memorizza diversi nomi di file con relativo percorso, e a causa di cicli e controlli devo scartare il primo file della lista ogni volta, man mano che il ciclo procede.

Non so se mi sono spiegato, sono comunque disponibile a chiarire meglio la situazione :D

andbin
13-09-2006, 11:54
DaLcA[']Sto scrivendo uno script ed è necessario effettuare uno shift del contenuto di una variabile non numerica. In pratica mi servirebbe un comando (o del codice) che permetta di eseguire quello che fa il comando shift (lui lo fa con variabili contenenti liste di numeri).

Nel mio caso ho una variabile che memorizza diversi nomi di file con relativo percorso, e a causa di cicli e controlli devo scartare il primo file della lista ogni volta, man mano che il ciclo procede.

Non so se mi sono spiegato, sono comunque disponibile a chiarire meglio la situazione :DScusa ... chi l'ha detto che shift opera solo su liste di numeri?? ;)

shift opera, parlando in generale, sui parametri "posizionali" ($1 $2 ....).

Non avresti problemi se tu facessi per esempio:
FILES="file1 file2 file3"

set $FILES

shift # Hai tolto il primo file, ora $1 contiene il secondo

]DaLcA[
13-09-2006, 13:15
Grazie, ho risolto il problema! :mano:

Pensavo che shift operasse solo sui numeri perchè facendo qualche prova nella console il comando restituiva l'errore:

-bash: shift: file1: numeric argument required

Ma di certo sbagliavo io. Ora ho risolto il problema dello shift così:


FILES="file1 file2 file3"

set $FILES

shift

FILES="$@" #reimposto FILES come se fosse shiftato


Grazie ancora :)