Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100

    [bash] esercizio getopts

    salve ragazzi sono alle prese nel capire il getopts che mi servirà in un progetto all uni...
    per capirlo ho preparato un esercizio semplice
    devo scrivere uno script conta
    ./conta [ -i inizio] [ -e fine ] log1 ... logN
    dove log1 ...log n sono file .
    lo script se invocato
    ./conta file 1 ... file n conta il numero complessivo di righe di tutti i file
    se invocato con ./conta -i babbo file1 .... file n conta il numero complessivo delle righe che iniziano per babbo
    se invocato con ./conta -e leonardo file1....filen conta il numero complessivo delle righe che finiscono per leonardo
    se invocato con entrambi gli argomenti conta il numero complessivo delle riche che iniziano con una cerrta parola e finiscono con certa parola esempio:
    FILE1 CONTENUTO:
    ciao sono dario come stai
    tutto bene ....come stai ?
    ciao bene te stai?
    ciao a letto

    FILE2 CONTENUTO:
    ciao
    stai
    come stai
    ciao sono mario come stai


    se invoco ./conta -i ciao -e stai file1 file 2
    mi deve restituire 3

    (il difficile è che l ordine dei parametri iniziali è irrelevane ovvero,
    ./conta -i ciao -e stai file1 file 2 è = ./conta -e stai -i ciao file1 file 2
    ed è proprio questo che mi complica le idee... please help me
    df

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    prova cosi':
    codice:
    #!/bin/bash
    while getopts "i:e:" o
    do
            case $o in
                    i ) i=$OPTARG;;
                    e ) e=$OPTARG;;
            esac
    done
    shift $(($OPTIND - 1))
    if [ $# -le 0 ]; then
            echo "devi specificare almeno un file"
            exit
    fi
    for f in $*;do
            if [ ! -f $f ]; then
                    echo "$f non esiste"
                    exit
            fi
    done
    if [ ! -n "$i" ] && [ ! -n "$e" ]; then
            echo "devi specificare -i o -e"
            exit
    fi
    grep -h "^$i.*$e$" $* |wc -l

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.