|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
linux[script bash] dubbi sintassi
Buongiorno . non Riesco a risolvere un dubbio riguardante la sintassi in uno script bash , a proposito dei caratteri speciali
#!/bin/bash if test $# -ne 1 ; then echo "Usage $0 dir" fi if ! test -d "$1" ; then echo "$1 is not a valid directory" fi cd "$1" for i in * ; do if test -d "$i" ; then echo "${i}: `ls -1 $i | wc -l` elementi" >> summary.out elif test -f "$i" ; then echo "${i}: `head -c 10 $i`" >> summary.out fi done in particolare questo script dovrebbe controllare tutti i file e/o directory in una directory e nel caso di file stampare su un altro file i primi 10byte nel caso di directory stamparne il nome e il numero di dir e file contenuti : i dubbi sono : echo "${i}: perchè la parentesi graffa?non bastava solo $i ?? e i : ?? che cosa significa echo: i due punti non sono superflui? perchè mettere un intero comando con `` , es `ls -1 $i | wc -l` ? per redirigere su file erano necessari gli apici? il punto e virgola nel if è necessario? lo script di sopra lanciato da shell mi stampa gli errori di file not found , su file lunghi e con spazi nei nomi qual'è la differenza con questa versione #!/bin/bash if test $# -ne 1 ; then echo "Usage $0 dir" fi if ! test -d "$1" ; then echo "$1 is not a valid directory" fi cd "$1" for i in * ; do if test -d "$i" ; then echo "$i" `ls -1 $i | wc -l` elementi >> summary.out elif test -f "$i" ; then echo "$i": `head -c 10 $i` >> summary.out fi done ?? la fonte da cui imparo mi pare discordare con altre nel web , dunque spero che qualcuno di voi possa aiutarmi. grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Esempio corretto e con un po' di modifiche d'esempio e secondo il mio gusto: Codice:
#!/bin/bash if test $# -ne 1 then echo "Usage $0 dir" fi if ! test -d "$1" then echo "$1 is not a valid directory" fi cd "$1" for i in * ; do if test -d "$i" ; then echo "${i}: $(ls -1 "$i" | wc -l) elementi" >> summary.out elif test -f "$i" ; then echo "${i}: $(head -c 10 "$i")" >> summary.out fi done
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
grazie mille
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:04.