informatica:sol:laboratorio15:esercitazionia:bashscriptexamples
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| informatica:sol:laboratorio15:esercitazionia:bashscriptexamples [26/03/2015 alle 15:05 (11 anni fa)] – Massimo Torquati | informatica:sol:laboratorio15:esercitazionia:bashscriptexamples [16/03/2016 alle 11:22 (10 anni fa)] (versione attuale) – Massimo Torquati | ||
|---|---|---|---|
| Linea 12: | Linea 12: | ||
| # Pluto --> PLUTO | # Pluto --> PLUTO | ||
| - | # per ogni argomento | + | # per ogni argomento |
| - | for f in $@; do | + | for f in $@; do |
| # considero solo il nome e non eventuali path che lo precedono | # considero solo il nome e non eventuali path che lo precedono | ||
| bname=`basename $f` | bname=`basename $f` | ||
| Linea 40: | Linea 40: | ||
| echo "$1 --> $r" | echo "$1 --> $r" | ||
| </ | </ | ||
| + | |||
| + | ==== removeblanklines.sh ==== | ||
| + | |||
| + | Data una lista di file testuali in input come argomenti dello script, rimuovere da ogni file le linee vuote. | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | # se non ci sono argomenti stampo il messaggio di usage | ||
| + | if [ $# -eq 0 ]; then | ||
| + | echo " | ||
| + | exit -1 | ||
| + | fi | ||
| + | # per ogni argomento | ||
| + | for file in $@; do | ||
| + | # controllo che sia un file regolare | ||
| + | if [ ! -f $file ]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | # controllo che sia scrivibile | ||
| + | if [ ! -w $file ]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | # rimuovo le linee bianche | ||
| + | # ^ rappresenta l' | ||
| + | # $ rappresenta la fine della linea | ||
| + | $(sed -i '/ | ||
| + | |||
| + | if [ $? -ne 0 ]; then | ||
| + | echo " | ||
| + | exit 3 | ||
| + | fi | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | ==== include.sh ==== | ||
| + | |||
| + | Realizzare uno script bash che preso come argomento un nome di file (il file può avere solo estensione " | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | # es. >$ include.sh prova.c | ||
| + | # Il file " | ||
| + | # Il file " | ||
| + | |||
| + | # se non ci sono argomenti stampo il messaggio di usage | ||
| + | if [ $# -eq 0 ]; then | ||
| + | echo " | ||
| + | exit -1 | ||
| + | fi | ||
| + | # controllo se il file in ingresso e' un file regolare | ||
| + | if [ ! -f $1 ]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | # controllo l' | ||
| + | r=$(echo $1 | grep " | ||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | # controllo l' | ||
| + | if [[ ! $1 =~ .*\.[ch] ]]; then | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | # per ogni linea verifico se c' | ||
| + | while read line; do | ||
| + | if [[ $line =~ \ *#\ *include\ *\" | ||
| + | echo "Il file \" | ||
| + | else | ||
| + | if [[ $line =~ \ *#\ *include\ *\< | ||
| + | echo "Il file \" | ||
| + | fi | ||
| + | fi | ||
| + | done < $1 | ||
| + | </ | ||
| ==== spaziodisco.sh (un esempio più complesso) ==== | ==== spaziodisco.sh (un esempio più complesso) ==== | ||
| - | Data un nome di directory come argomento, stampare sullo standard output la lista ordinata in modo decrescente in base alla size dei file/ | + | Data un nome di directory come argomento |
| Es: ./ | Es: ./ | ||
| < | < | ||
| Linea 56: | Linea 138: | ||
| if [[ $# != 1 ]]; then | if [[ $# != 1 ]]; then | ||
| - | echo " | + | echo " |
| - | echo " | + | echo " |
| exit 1 | exit 1 | ||
| fi | fi | ||
| if [ ! -d $1 ]; then | if [ ! -d $1 ]; then | ||
| - | echo " | + | echo " |
| exit 2 | exit 2 | ||
| fi | fi | ||
| if [ ! -r $1 ]; then | if [ ! -r $1 ]; then | ||
| - | echo " | + | echo " |
| exit 3 | exit 3 | ||
| fi | fi | ||
informatica/sol/laboratorio15/esercitazionia/bashscriptexamples.1427382322.txt.gz · Ultima modifica: 26/03/2015 alle 15:05 (11 anni fa) da Massimo Torquati
