2011-08-30 9 views
13

ho due variabili chiamate count1 e count7Come aggiungere valori in una variabile nello scripting di shell Unix?

count7=0 
count7=$(($count7 + $count1)) 

Questo dimostra un errore "l'espressione non è completa, più di token richiesto".

Come aggiungere le due variabili?

+0

A cosa è impostato 'count1'? Se non è impostato, assomiglia alla stringa vuota e questo porterebbe a un'espressione non valida. Quale shell stai usando? –

+0

kshell e count1 è impostato su un valore. C'è un altro modo in cui possiamo aggiungere continuamente il conteggio uscendo da un ciclo come array? – suvitha

+0

Hai bisogno di spiegare qual è il tuo vero problema, allora. Un possibile problema può esserci se si dispone di una pipeline e si aggiunge il risultato in un ciclo nella pipeline, quindi viene elaborato in una sotto-shell e non è possibile ottenere il risultato aggiornato nella shell principale. Ma è necessario mostrare più codice prima di poter fare quella diagnosi. Ciò che hai mostrato fortemente suggerisce che '$ count1' non è impostato su ciò che pensi sia impostato su. –

risposta

0

io non avere un sistema unix sotto le mie mani, ma provate questo:

count7=$((${count7} + ${count1}))

O forse avere una shell che non supporta questa espressione. Penso che lo sia bash, ma lo sh no.

EDIT: C'è un'altra sintassi, provare:

count7=`expr $count7 + $count1` 
20

Qual è count1 insieme a? Se non è impostato, assomiglia alla stringa vuota e questo porterebbe a un'espressione non valida. Quale shell stai usando?

In 3.x Bash su MacOS X 10.7.1:

$ count7=0 
$ count7=$(($count7 + $count1)) 
-sh: 0 + : syntax error: operand expected (error token is " ") 
$ count1=2 
$ count7=$(($count7 + $count1)) 
$ echo $count7 
2 
$ 

Si potrebbe anche usare ${count1:-0} per aggiungere 0 se $count1 è disinserito.

+0

Molto utile! Grazie! – emanuelcds

1

Ecco un semplice esempio per aggiungere due variabili:

var1=4 
var2=3 
let var3=$var1+$var2 
echo $var3 
5

In ksh, bash, sh:

$ count7=0      
$ count1=5 
$ 
$ ((count7 += count1)) 
$ echo $count7 
$ 5 
+0

funziona anche in sh ... – pkm

1

lo script di cui sopra non può funzionare in ksh. devi usare il 'lascia' opparand per asserire il valore e poi farlo eco.

val1=4 

val2=3 

let val3=$val1+$val2 

echo $val3 
5
var=$((count7 + count1)) 

aritmetica in bash usa $((...)) sintassi.

Non è necessario a $ simbolo all'interno del $(())

0
echo "$x" 
    x=10 
    echo "$y"`enter code here` 
    y=10 
    echo $[$x+$y] 

Risposta: 20

1

Si può fare anche questo. Può essere più veloce per i calcoli rapidi:

echo $[2+2] 
Problemi correlati