GNU/Linux >> Belajar Linux >  >> Linux

Lakukan matematika di shell Linux dengan GNU bc

Sebagian besar sistem POSIX dilengkapi dengan GNU bc, bahasa pemrosesan numerik presisi arbitrer. Sintaksnya mirip dengan C, tetapi juga mendukung eksekusi interaktif pernyataan dan pemrosesan data dari standar di (stdin ). Karena alasan itu, seringkali jawaban atas pertanyaan, "Bagaimana cara mengerjakan matematika di shell Linux?" Gaya respons ini umum di internet:

$ echo "1+1" | bc
2

Meskipun itu benar-benar valid, beberapa pengguna berpendapat bahwa itu elegan dibandingkan dengan sesuatu yang lebih intuitif, seperti:

$ 1+1  #this does not work
2

Mode interaktif sedikit lebih mudah:

$ bc 
1+1
2
quit
$

Tetapi mode interaktif tidak selalu sesuai dengan alur kerja yang diinginkan dan intuitif dari sesuatu yang sederhana, seperti hanya mengetik perhitungan yang Anda inginkan. Untuk ini, saya menyarankan kalkulator Bluebat dalam Bash murni.

Apa yang sebenarnya disediakan oleh bc adalah bahasa matematika untuk perhitungan tingkat lanjut.

Fungsi lanjutan dengan mathlib

Dengan sendirinya, bc menyediakan fungsi matematika dasar. Anda dapat mengujinya dalam mode interaktif:

$ bc
3^2
9
(3^2)*(9)/3
27

Gunakan --mathlib pilihan untuk mendapatkan fungsi lanjutan, termasuk sinus, kosinus, tangen, dan banyak lagi. Dalam mode interaktif, Anda dapat menguji beberapa di antaranya. Berikut kosinus dari 90:

c(90)
-.44807361612917015236

Sinus 9:

s(9)
.41211848524175656975

Membuat fungsi bc Anda sendiri

Anda juga dapat membuat fungsi Anda sendiri di bc. Definisi fungsi dimulai dengan define kata kunci dan diapit dengan kurung kurawal. Berikut adalah fungsi sederhana yang dimasukkan ke dalam sesi interaktif yang mengembalikan nomor berapa pun yang diberikan:

$ bc
define echo(n) {
  return (n);
}

Dalam sesi interaktif yang sama, ujilah:

echo(2)
2
echo(-2)
-2

Pernyataan if dalam bc

Bahasa bc juga memiliki berbagai pernyataan kontrol, yang paling sederhana adalah if/else. Sintaksnya mungkin tampak familier pada pandangan pertama, tetapi ada kehalusan dalam cara menangani kawat gigi. Perhatikan bahwa lain klausa dari pernyataan if diapit oleh kurung kurawal, sedangkan then klausa tidak, tetapi keduanya diakhiri dengan titik koma. Berikut adalah fungsi untuk mencari nilai mutlak suatu bilangan n :

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Dalam sesi interaktif yang sama, ujilah:

abso(-5)
5
abso(5)
5

Mengimpor data ke bc

Bekerja dalam sesi interaktif dapat ditoleransi untuk perhitungan dan eksperimen yang cepat, tetapi Anda kehilangan data saat Anda berhenti, dan sulit untuk mengedit saat Anda membuat kesalahan. Untungnya, bc dapat memuat variabel dan fungsi dari file eksternal.

Berikut adalah file yang berisi dua variabel (sol dan foo ) dan abso custom khusus fungsi untuk mencari nilai absolut:

sol=299792458

foo=42

define abso(n) {
  if ( n > 0 ) return (n);
  { return (-n); }
}

Simpan ini ke dalam file bernama bcvars.bc , sehingga Anda dapat mengimpornya ke sesi interaktif bc:

$ bc bcvars.bc
foo
42
sol
299792458
abso(-23)
23

Perkuat matematika Anda dengan bc

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Bahasa bc relatif sederhana, asalkan Anda cukup tahu matematika untuk menyusun persamaan untuk apa pun yang ingin Anda capai. Sementara bc secara default menyediakan fungsi dasar yang berguna dan memungkinkan Anda untuk membuat sendiri, Anda dapat mengurangi beban kerja Anda dengan berdiri di atas bahu raksasa. File yang dimuat dengan fungsi baru, baik untuk dasar matematika maupun untuk tugas tertentu (misalnya, menghitung bunga majemuk), tersedia dari halaman GNU bc, dan dokumentasi lengkap untuk bc tersedia.

Jika Anda tertarik untuk melakukan matematika yang lebih baik dalam shell, coba bc. Ini tidak akan mengubah Anda menjadi seorang jenius matematika, tetapi mungkin akan lebih mudah untuk menjadi seorang jenius.


Linux
  1. Jadwalkan tugas dengan Linux pada perintah

  2. Analisis kernel Linux dengan ftrace

  3. Partisi drive di Linux dengan GNU Parted

  1. Selesaikan lebih banyak di baris perintah Linux dengan GNU Parallel

  2. Cara Mengubah Shell Default Di Linux

  3. Bagaimana cara mengganti nama file dengan spasi menggunakan shell Linux?

  1. Menjadwalkan tugas dengan perintah cron Linux

  2. Dasar-dasar Linux:Cara Mengunduh File di Shell Dengan Wget

  3. Membuat template dengan Linux dalam Shell Script?