Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    UNIX SCRIPT valutazione parametro in input

    ciao
    uso la shell bash per far girare uno script unix che a volte ha 2 parametri in input e a volte deve essere eseguito senza parametri

    eseguo da shell
    mioscript.sh 10-10-2009 13-10-2009
    dove le 2 date son divise da spazio e sono i parametri di input.

    nello script assegno a 2 variabili i valori in input

    con questa logica: se non sono presenti i valori in input allora prendo al data odierna -1
    #!/bin/sh
    if [ $1 ==""]
    then
    DATAI=`TZ=GMT+24 date +%d-%m-%Y`
    DATAF=`TZ=GMT+24 date +%d-%m-%Y`
    else
    DATAI="$1"
    DATAF="$2"
    fi

    Nel caso che non vi siano parametri in input tutto ok, ma se metto i 2 parametri in input mi restituisce
    mioscript.sh: test: argument expected


    Mi potete dare una mano?Dove sbaglio?
    TY

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Non ho capito bene cosa devi fare, ma comunque così

    codice:
    #!/bin/sh
    if [ "$1" == "" ]
    then
    	DATAI=`TZ=GMT+24 date +%d-%m-%Y`
    	DATAF=`TZ=GMT+24 date +%d-%m-%Y`
    else
    	DATAI="$1"
    	DATAF="$2"
    fi
    non dà nessun errore, qualsiasi sia il numero di parametri in input. In ogni caso, per verificare il numero dei parametri in input, si può ricorrere alla variabile $#, che contiene appunto il loro numero.
    every day above ground is a good one

  3. #3
    Grazie della risposta, ma non va
    ho provato anche
    if [ $# == "2" ]
    ma
    non riesco ad assegnare il valore del parametro d'ingresso alla variabile.

    Se non vi sono parametri d'ingresso lo assegno io e funziona.
    Lo scopo è che se passo il parametro in input, deve memorizzarlo in una variabile, altrimenti prende il valore che gli dico io.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Scusa ma a me questo script

    codice:
    #!/bin/sh
    if [ "$1" == "" ]
    then
    	DATAI=`TZ=GMT+24 date +%d-%m-%Y`
    	DATAF=`TZ=GMT+24 date +%d-%m-%Y`
    else
    	DATAI="$1"
    	DATAF="$2"
    fi
    
    echo "$DATAI"
    echo "$DATAF"
    dà questi risultati

    codice:
    ./script.sh
    17-01-2010
    17-01-2010
    codice:
    ./script.sh ciao prova
    ciao
    prova
    cosa c'è che non va?
    every day above ground is a good one

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 © 2025 vBulletin Solutions, Inc. All rights reserved.