Calcola la variabile e inviala a un'altra variabile


10

L'unica calcolatrice che conosco è bc. Voglio aggiungere 1a una variabile e output su un'altra variabile.

Ho ottenuto la nextnumvariabile contando la stringa in un file:

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

Diciamo che il nextnumvalore è 1. Se aggiunto con 1, diventerà 2. Per calcolare, corro:

rownum=`$nextnum+1 | bc`

ma ho ricevuto un errore:

1+1: command not found

Ho appena fallito nella parte di calcolo. Ho provato a cambiare il backtick ma non funziona ancora. Non ho idea di come calcolare le variabili e produrle in un'altra variabile.


Risposte:


21

La sottostringa all'interno di ` `deve essere un comando valido stesso:

rownum=`echo $nextnum+1 | bc`

Ma è preferibile usare $( )invece di ` `:

rownum=$(echo $nextnum+1 | bc)

Ma non è necessario bc, la shell è in grado di eseguire l' aritmetica intera :

rownum=$((nextnum+1))

O ancora più semplice in bashe ksh:

((rownum=nextnum+1))

8

Puoi anche usare l'aritmetica incorporata in bash:

rownum=$((nextnum+1))

che sarebbe leggermente più veloce.


2

Assolutamente giusto e completa le soluzioni suggerite, solo per menzionare il modo in cui doveva essere fatto in passato quando era disponibile solo Bourne-Shell, è così che piace:

rownum=`expr $nextnum + 1` 

1

Vorrei usare (come accennato in precedenza) rownum=$((nextnum+1))o ((rownum=nextnum+1))ma se si preferisce un comando standard è possibile utilizzare il comando let, comelet rownum=$nextnum+1


1
Chiamare letun "comando standard" è molto fuorviante. $((…))è la sintassi standard (POSIX) mentre letè un'estensione ksh (e bash, zsh).
Gilles 'SO- smetti di essere malvagio'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.