Newsgroup: it.comp.os.linux.development
Titolo: Bash Scripting

Ciao a tutti.
Ho uno script bash che viene chiamato con un numero n (variabile in ogni
chiamata) di parametri; se volessi memorizzare in VAR i parametri dal 2 al
5, ad esempio, come potrei fare?
Una cosa simile a: VAR="$2-5"
O se volessi memorizzare tutti i parametri dal 4 in poi?
Una cosa simile a: VAR="$4-"
Maneggiare singole stringhe e` semplice; cose tipo ${VAR:0:5} e/o
${VAR##*_*} le conosco, ma non sono a conoscenza di una sintassi per fare
cio` che mi serve (e mi pare brutto concludere che *quindi* non esiste :P).
Qualcuno conosce un modo per farlo nativamente? (senza scrivere funzioni
aggiuntive, intendo proprio un metodo built-in; utilizzando programmi
esterni (grep, sed, cut, ecc. ecc.) e/o funzioni in bash ho gia` fatto).
Ho necessita` di distribuire poi gli scripts in oggetto, quindi, direi,
che l'idea di un'eventuale patch alla bash stessa dovrei scartarla a
priori.
Ancora una domanda; sto scrivendo un programma C che fa delle pipe
lanciando degli script in una shell (nel mio caso bash) con vari
parametri; al momento faccio l'escape dei seguenti caratteri:
        &;!#^*()$=|{}[]<>?~`,'"\
A qualcuno ne vengono in mente altri? (su bash funziona ma,
potenzialmente, il programma in oggetto potrebbe girare su di una
qualsiasi shell (compresi cmd.exe e 
command.com
), che probabilmente io non
conosco (ho usato pochissimo, ad esempio, tcsh, KornShell, ecc. ecc.), e
che abbia altri caratteri "speciali").
Grazie.
Ciao.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 chiamata) di parametri; se volessi memorizzare in VAR i parametri dal 2 al
]zac[
Cerca con www.google 'Advanced Bash-Scripting Guide' troverai di tutto e di
più.

 più.
Ciao e grazie dell'attenzione.
Conosco l'howto che mi hai consigliato ma non mi pare offra soluzioni al
mio problema. Dico mi pare perche`, in effetti, e` un bel po' di tempo che
non lo guardo. Mi hai suggerito questo documento perche` sai per certo che
risolve il mio problema (e quindi mi fornisci l'ennesima dimostrazione di
quanto io sia rincoglionito) oppure era piu` un aiuto del tipo "prova, li`
trovi tante di quelle cose che potrebbe esserci anche cio` che ti occorre"?
Ciao e grazie ancora.


 occorre"?
]zac[
Li c'è tutto quello che la bash può fare, si tratta di provare i vari esempi
e di usare quello che più si avvicina a quel che ti serve con le dovute
modifiche.
Se ho capito bene quello che vuoi fare:
index=1
for arg in "$@"
do
  echo "Arg #$index = $arg"
  let "index+=1"
done
A questo punto ti basta semplicemente mettere un if che faccia le operazioni
solo per i numeri o sul range di parametru su cui vuoi operare.
Ti consiglio una lettura aproffondita e di fare parecchie prove su
'Positional Parameters' e 'Parameter substitution'
Salve
     Gdb

 'Positional Parameters' e 'Parameter substitution'
Si va beh ... facciamo che ti giro lo stesso consiglio :P
Ciao.
Grazie lo stesso.


         &;!#^*()$=|{}[]<>?~`,'"\
perldoc -f quotemeta
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
           -<! Failure is not an option...it's bundled with Microsoft !>-

 perldoc -f quotemeta
Grazie (non sono un perl hacker  e  non conoscevo perldoc); li` dice che
la funzione ritorna una stringa con  tutti  i  caratteri non presenti in
"/[A-Za-z_0-9]/" backslashed. Volevo evitare  di scrivere una cosa tipo:
        's/\([^[: alnum: ]_]\)/\\\1/g'   
ma se lo fa perl direi che  posso  farlo  tranquillamente  anche  io :P
Grazie dell'attenzione.


 ma se lo fa perl direi che  posso  farlo  tranquillamente  anche  io :P
Appunto :-)
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
-<! When I was young I used to pray for a bike. Then I realized that God 
	 doesn't work that way. So I stole a bike and prayed for forgiveness. !>-

 Appunto :-)
Sfortunatamente, come ti dicevo prima, non  sono  un  perl  hacker e non
conoscevo cio` che mi hai indicato.  Ora  che lo conosco posso accodarmi
all'andazzo :)


 qualsiasi  altra  cosa  io  posso  scrivere  per  estrarre  i parametri.
Ok.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
-<! Le donne e le salsicce sono la stessa cosa: pelle fuori e maiale dentro !>-