Saya menggunakan terminal serial untuk memberikan masukan ke percobaan lab kami. Saya menemukan itu menggunakan
$ echo "5X5"
hanya mengembalikan string "5X5"
. Apakah ada perintah untuk menjalankan operasi perkalian?
sumber
Saya menggunakan terminal serial untuk memberikan masukan ke percobaan lab kami. Saya menemukan itu menggunakan
$ echo "5X5"
hanya mengembalikan string "5X5"
. Apakah ada perintah untuk menjalankan operasi perkalian?
Ya, Anda dapat menggunakan Ekspansi Aritmatika bawaan bash$(( ))
untuk melakukan beberapa matematika sederhana
$ echo "$((5 * 5))"
25
Periksa bagian Aritmatika Shell di Manual Referensi Bash untuk daftar lengkap operator.
Demi kelengkapan, seperti yang ditunjukkan orang lain, jika Anda membutuhkan ketelitian yang sewenang-wenang, bc
atau dc
akan lebih baik.
Untuk matematika yang lebih maju dan tepat pertimbangkan menggunakan bc (1).
echo "3 * 2.19" | bc -l
6.57
Bash mendukung ekspansi aritmatika dengan $(( expression ))
. Sebagai contoh:
$ echo $(( 5 * 5 ))
25
Sejumlah utilitas menyediakan aritmatika, termasuk bc dan expr .
$ echo '5 * 5' | /usr/bin/bc
25
$ /usr/bin/expr 5 \* 5
25
Solusi klasiknya adalah:
expr 5 \* 5
Pilihan bagus lainnya adalah:
echo 5 5\*p | dc
Kedua solusi ini hanya akan bekerja dengan operan integer.
dc
bekerja dengan pelampung. Cobaecho '4 k 50 7 / p' | dc
. Outputnya adalah7.1428
. Thek
perintah set presisi.k
. Saya pasti ingat presisi default menjadi 0 (pemotongan menjadi integer). Apakah saya salah mengingat, atau apakah penerapan yang lebih baru telah mengubah perilaku?dc
jarang menggunakan selama bertahun-tahun karena saya lebih aljabar dan kurang RPN jadi saya tidak ingat. Pada sistem GNU yang saya gunakan, defaultnya adalah 0.man
Halaman FreeBSD lama (1993) menyebutkan defaultnya nol, tetapiman
halaman BSD yang lebih lama tidak.echo '4 k 50.5 7 / p' | dc
bekerja (output :)7.2142
.Fungsi shell sederhana (tidak diperlukan sed) harus melakukan trik menafsirkan '5X5'
sumber
Saya menggunakan fungsi ini yang menggunakan
bc
dan dengan demikian mendukung perhitungan floating point:Contoh:
Ekspansi aritmatika Bash tidak mendukung pelampung (tapi Korn shell dan zsh mendukungnya).
Contoh:
sumber
Saya memiliki skrip sederhana yang saya gunakan untuk ini:
me@mycomputer:~$ cat /usr/local/bin/c
Ini perubahan
x
untuk*
karena*
merupakan karakter khusus di shell. Gunakan sebagai berikut:c 5x5
c 5-4.2 + 1
c '(5 + 5) * 30'
(Anda masih harus menggunakan tanda kutip jika ekspresi tersebut berisi tanda kurung).sumber
tr
dapat digunakan untuk melakukan pemetaan karakter untuk beberapa karakter.Jika Anda suka python dan memiliki opsi untuk menginstal paket, Anda dapat menggunakan utilitas yang saya buat ini.
sumber