PDA

View Full Version : Sintassi Script Bash


Duce
08-08-2007, 18:06
Ciao a tutti,

sto creando uno script bash in ambiente Linux ma mi sono arenato a questo punto:

`date -d "-1 month" +%Y/%m/%d`

Questa semplice istruzione non fa altro che calcolare la data antecedente a quella odierna di 1 mese.

Il mio problema è che il numero di mesi (nell'esempio era 1) deve essere dato in input, al che modifico l'istruzione in questo modo:
`date -d "-$1 month" +%Y/%m/%d ` , dove per $1 s'intende il primo argomento passato allo script. Qui nasce il dramma!!. Questa istruzione così com'è non è buona, non riesco a fargli dire che $1 = valore passato in input.
Mi costruisco una stringa (nome variabile: STRINGA) che contiene esattamente il comando voluto (usando anche l'argomento in input) ma quando vado a fare DATACERCATA=`$STRINGA` (cioè voglio assegnare alla variabile DATACERCATA il valore del comando contenuto nella variabile STRINGA) ottengo questo errore: date: too many non-option arguments: +%Y/%m/%d .

Qualcuno sa dirmi come risolvere questo problema di sintassi?

Un grazie in anticipo

andbin
08-08-2007, 20:41
Il mio problema è che il numero di mesi (nell'esempio era 1) deve essere dato in input, al che modifico l'istruzione in questo modo:
`date -d "-$1 month" +%Y/%m/%d ` , dove per $1 s'intende il primo argomento passato allo script. Qui nasce il dramma!!. Questa istruzione così com'è non è buona, non riesco a fargli dire che $1 = valore passato in input.A me risulta corretto.

prova.sh
#!/bin/bash

D=`date -d "-$1 month" +%Y/%m/%d`

echo $D
prova.sh 1
2007/07/08
prova.sh 2
2007/06/08

Duce
08-08-2007, 20:45
il file di script non è .sh, questo cambia qualcosa?.

andbin
08-08-2007, 20:48
il file di script non è .sh, questo cambia qualcosa?.No. Io in genere metto .sh per rendere chiaro che si tratta di uno script della shell e non di un eseguibile.

Duce
08-08-2007, 20:52
Domani che rientro in ufficio riprovo, il mio solo dubbio a questo punto è che ci sia qualche carattere sporco e non me ne sia accorto. Ti ringrazio molto. Ciao

P.S. Secondo te l'errore che ho " date: too many non-option arguments: +%Y/%m/%d " a cosa sia dipeso?, precisamente cosa potrebbe causare un errore simile?

Duce
09-08-2007, 09:33
Ho riprovato la stringa di comando ed in effetti adesso funziona. Proprio non so spiegarmelo. Ancora una volta penso che ci fosse un carattere sporco che mi sballava la stringa. Grazie 1000