GNU/Linux >> Belajar Linux >  >> Linux

Bash Beginner Series #5:Menggunakan Operator Aritmatika di Bash Scripting

Ayo lakukan Bash Math!

Saat menulis skrip bash, Anda akan sering menemukan diri Anda ingin mengetahui hasil perhitungan aritmatika untuk menentukan ruang disk yang tersisa, ukuran file, tanggal kedaluwarsa kata sandi, jumlah host, bandwidth jaringan, dll.

Dalam bab seri pemula bash ini, Anda akan belajar menggunakan operator bash untuk melakukan berbagai perhitungan aritmatika.

Untuk menyegarkan ingatan Anda, berikut adalah operator aritmatika di bash:

Operator Deskripsi
+ Penambahan
- Pengurangan
* Perkalian
/ Pembagian bilangan bulat (tanpa angka desimal)
% Modulus pembagian (hanya memberikan sisa)
** perpangkatan (x pangkat y)

Melakukan penjumlahan dan pengurangan dalam skrip bash

Mari kita buat skrip bash bernama addition.sh yang hanya akan menambahkan dua ukuran file (dalam byte) dan menampilkan hasilnya.

Anda pasti sudah akrab dengan argumen dalam skrip bash sekarang. Saya harap Anda juga terbiasa dengan perintah cut and du.

Perintah du memberi Anda ukuran file bersama . Outputnya memiliki ukuran file dan nama file. Di sinilah perintah cut digunakan untuk mengekstrak kolom pertama (yaitu ukuran file) dari output. Output dari perintah du diteruskan ke perintah cut menggunakan pengalihan pipa.

Berikut scriptnya:

#!/bin/bash

fs1=$(du -b $1 | cut -f1)
fs2=$(du -b $2 | cut -f1)

echo "File size of $1 is: $fs1"
echo "File size of $2 is: $fs2"

total=$(($fs1 + $fs2))

echo "Total size is: $total"

Perhatikan bahwa Anda akan meneruskan dua nama file sebagai argumen ke skrip. Misalnya, di sini saya menjalankan skrip dan meneruskan dua file /etc/passwd dan /etc/group sebagai argumen:

[email protected]:~/scripts$ ./addition.sh /etc/passwd /etc/group
File size of /etc/passwd is: 2795
File size of /etc/group is: 1065
Total size is: 3860

Baris paling penting di addition.sh scriptnya adalah:

total=$(($fs1 + $fs2))

Di mana Anda menggunakan operator + untuk menambahkan dua angka $fs1 dan $fs2. Perhatikan juga bahwa untuk mengevaluasi ekspresi aritmatika apa pun, Anda harus menyertakan di antara tanda kurung ganda sebagai berikut:

$((arithmetic-expression))

Anda juga dapat menggunakan operator minus (-) untuk untuk pengurangan. Misalnya, nilai sub variabel dalam pernyataan berikut akan menghasilkan tujuh:

sub=$((10-3))

Melakukan perkalian dan pembagian dalam skrip bash

Mari kita buat skrip bash bernama giga2mega.sh yang akan mengonversi Gigabyte (GB) ke Megabyte (MB):

#!/bin/bash

GIGA=$1
MEGA=$(($GIGA * 1024))

echo "$GIGA GB is equal to $MEGA MB"

Sekarang mari kita jalankan skrip untuk mengetahui berapa banyak Megabyte yang ada dalam empat Gigabytes:

[email protected]:~/scripts$ ./giga2mega.sh 4
4 GB is equal to 4096 MB

Di sini saya menggunakan operator perkalian (*) untuk mengalikan jumlah Gigabyte dengan 1024 untuk mendapatkan Megabyte yang setara:

MEGA=$(($GIGA * 1024))

Sangat mudah untuk menambahkan lebih banyak fungsi ke skrip ini untuk mengonversi Gigabytes (GB) ke Kilobytes (KB):

KILO=$(($GIGA * 1024 * 1024))

Saya akan membiarkan Anda mengonversi Gigabyte menjadi byte sebagai latihan!

Anda juga dapat menggunakan operator pembagian (/) untuk membagi dua angka. Misalnya, nilai variabel div dalam pernyataan berikut akan dievaluasi menjadi lima:

div=$((20 / 4))

Perhatikan bahwa ini adalah pembagian bilangan bulat dan semua pecahan hilang. Misalnya, jika Anda membagi 5 dengan 2, Anda akan mendapatkan 2 yang salah, tentu saja:

[email protected]:~/scripts$ div=$((5 / 2))
[email protected]:~/scripts$ echo $div
2

Untuk mendapatkan keluaran desimal; Anda dapat menggunakan bc memerintah. Misalnya, untuk membagi 5 dengan 2 dengan bc perintah, Anda dapat menggunakan pernyataan berikut:

echo "5/2" | bc -l
2.50000000000000000000

Perhatikan bahwa Anda juga dapat menggunakan operator lain dengan bc perintah setiap kali Anda berurusan dengan angka desimal:

Menggunakan daya dan sisa (modulo)

Ayo buat kalkulator daya! Saya akan membuat skrip bernama power.sh yang akan menerima dua angka a dan b (sebagai argumen) dan itu akan menampilkan hasil dari a diangkat ke kekuatan b :

#!/bin/bash
a=$1
b=$2
result=$((a**b))
echo "$1^$2=$result"

Perhatikan bahwa saya menggunakan operator eksponensial (**) untuk menghitung hasil a diangkat ke kekuatan b .

Mari kita jalankan beberapa skrip untuk memastikan bahwa skrip menghasilkan jawaban yang benar:

[email protected]:~/scripts$ ./power.sh 2 3
2^3=8
[email protected]:~/scripts$ ./power.sh 3 2
3^2=9
[email protected]:~/scripts$ ./power.sh 5 2
5^2=25
[email protected]:~/scripts$ ./power.sh 4 2
4^2=16

Anda juga dapat menggunakan operator modulo (%) untuk menghitung sisa bilangan bulat. Misalnya, nilai rem variabel dalam pernyataan berikut akan dievaluasi menjadi 2:

rem=$((17%5))

Sisanya di sini adalah 2 karena 5 menjadi 17 tiga kali, dan dua tetap!

Waktu Latihan:Membuat skrip bash Konverter Gelar

Mari selesaikan tutorial ini dengan membuat skrip bernama c2f.sh yang akan mengubah derajat Celcius ke derajat Fahrenheit menggunakan persamaan di bawah ini:

F = C x (9/5) + 32

Ini akan menjadi latihan yang baik bagi Anda untuk mencoba hal-hal baru yang baru saja Anda pelajari dalam tutorial bash ini.

Inilah solusinya (mungkin ada beberapa cara untuk mencapai hasil yang sama):

#!/bin/bash

C=$1
F=$(echo "scale=2; $C * (9/5) + 32" | bc -l)

echo "$C degrees Celsius is equal to $F degrees Fahrenheit."

Saya menggunakan bc perintah karena kita berurusan dengan desimal dan saya juga menggunakan "skala =2" untuk menampilkan output dalam dua titik desimal.

Mari kita jalankan beberapa skrip untuk memastikan skrip menghasilkan hasil yang benar:

[email protected]:~/scripts$ ./c2f.sh 2
2 degrees Celsius is equal to 35.60 degrees Fahrenheit.
[email protected]:~/scripts$ ./c2f.sh -3
-3 degrees Celsius is equal to 26.60 degrees Fahrenheit.
[email protected]:~/scripts$ ./c2f.sh 27
27 degrees Celsius is equal to 80.60 degrees Fahrenheit.

Sempurna! Ini membawa kita ke akhir tutorial ini. Latih apa yang Anda pelajari dengan mengunduh kumpulan latihan bash dari bab ini.

Bash Bab 5 Latihan PertanyaanMasalah dan solusinya untuk mempraktikkan apa yang baru saja Anda pelajari di bab iniBash-Bab-5-Pertanyaan Praktik-Linux-Handbook.pdf32 KB

Saya harap Anda menikmati mengerjakan beberapa matematika dengan bash dan menantikan tutorial berikutnya dalam seri pemula bash karena Anda akan belajar cara memanipulasi string!


Linux
  1. temukan dan salin file menggunakan Bash

  2. Cara mengganti spasi pada nama file menggunakan skrip bash

  3. Dapatkan mtime file tertentu menggunakan Bash?

  1. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  2. Bash Seri Pemula #8:Loop di Bash

  3. Redirect semua output ke file menggunakan Bash di Linux?

  1. Skrip bash(I)

  2. Menggunakan Perintah Nama Dasar Linux di Skrip Bash

  3. Bagaimana cara menulis integer ke file biner menggunakan Bash?