Hitung variabel, dan hasilkan ke variabel lain

10

Satu-satunya kalkulator yang saya tahu adalah bc. Saya ingin menambahkan 1ke variabel, dan output ke variabel lain.

Saya mendapatkan nextnumvariabel dari penghitungan string dalam file:

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

Katakanlah nextnumnilainya 1. Ketika ditambahkan dengan 1, itu akan menjadi 2. Untuk menghitung, saya menjalankan:

rownum=`$nextnum+1 | bc`

tapi ada kesalahan:

1+1: command not found

Saya baru saja gagal di bagian perhitungan. Saya sudah mencoba mengubah backtick tetapi tetap tidak berhasil. Saya tidak tahu bagaimana cara menghitung variabel dan output ke variabel lain.

apasajja
sumber

Jawaban:

21

Substring di dalam ` `harus berupa perintah yang valid itu sendiri:

rownum=`echo $nextnum+1 | bc`

Tetapi lebih baik menggunakan $( )daripada ` `:

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

Tetapi tidak perlu bc, shell dapat melakukan aritmatika integer :

rownum=$((nextnum+1))

Atau bahkan lebih sederhana di bashdan ksh:

((rownum=nextnum+1))
manatwork
sumber
8

Anda juga dapat menggunakan aritmatika bawaan di bash:

rownum=$((nextnum+1))

yang akan menjadi sedikit lebih cepat.

Julian
sumber
2

Benar-benar benar dan melengkapi solusi yang disarankan, hanya untuk menyebutkan cara itu harus dilakukan di masa lalu ketika hanya Bourne-Shell yang tersedia, itulah cara yang disukai:

rownum=`expr $nextnum + 1` 
serigala
sumber
1

Saya akan menggunakan (seperti yang disebutkan sebelumnya) rownum=$((nextnum+1))atau ((rownum=nextnum+1))tetapi jika Anda lebih suka perintah standar Anda dapat menggunakan perintah let, sepertilet rownum=$nextnum+1

Hola Kedelai Edu Feliz Navidad
sumber
1
Memanggil let"perintah standar" sangat menyesatkan. $((…))adalah sintaks standar (POSIX) sedangkan letekstensi adalah ksh (dan bash, zsh).
Gilles 'SANGAT berhenti menjadi jahat'