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.


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))

8

Anda juga dapat menggunakan aritmatika bawaan di bash:

rownum=$((nextnum+1))

yang akan menjadi sedikit lebih cepat.


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` 

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


1
Memanggil let"perintah standar" sangat menyesatkan. $((…))adalah sintaks standar (POSIX) sedangkan letekstensi adalah ksh (dan bash, zsh).
Gilles 'SANGAT berhenti menjadi jahat'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.