נקודה צפה
רמת קושי: #beginners
שאלה שנתקלתי בה בקבוצת לינוקס והתשובה הפתיעה מעט גם אותי, השאלה בתמצית היא איך אפשר בבאש לבצע חשבון עם ערך עשרוני?
בכדי לבצע פעולות אריתמטיות בבאש ניתן להשתמש בפקודת
מה קורה כשמנסים לקבל ערך עשרוני?
להפתעתנו נראה שלא משנה באיזה כלי נשתמש נראה שאי אפשר לקבל את השבר.
פקודת bc יודעת להחזיר ערך בעל נקודה צפה על ידי שימוש בדגל
את אותו רעיון ניתן לעשות כמובן עם כל אינטרפטר אחר שזמין במערכת כמו פייתון, php, node וכו'
עריכה: תודה לגולן על ההערה, הטריק הבא לא יעבוד בבאש אלא רק בזיש
#expr
#awk
#let
#bc
@bash_tips
רמת קושי: #beginners
שאלה שנתקלתי בה בקבוצת לינוקס והתשובה הפתיעה מעט גם אותי, השאלה בתמצית היא איך אפשר בבאש לבצע חשבון עם ערך עשרוני?
בכדי לבצע פעולות אריתמטיות בבאש ניתן להשתמש בפקודת
expr
, bc
, let
או לעטוף את הביטוי ב (())$
$ expr 5 + 4
9
$ let add=5+5 ; echo $add
10
$ echo $((5*3))
15
$ bc <<< '4 * 2'
8
אחלה עובד מעולהמה קורה כשמנסים לקבל ערך עשרוני?
להפתעתנו נראה שלא משנה באיזה כלי נשתמש נראה שאי אפשר לקבל את השבר.
$ let float=5/2 ; echo $float
2
$ expr 5 / 2
2
$ echo $((5/2))
2
$ bc <<< '5 / 2'
2
לינק ממש מעניין שהמשתמש עמיעד הביא מציג רשימה יפה של פתרונות, ניסיתי את מקצתם להלן אלו שמצאו חן בעיניי.פקודת bc יודעת להחזיר ערך בעל נקודה צפה על ידי שימוש בדגל
-l
רק שהיא מחזירה אותו בצורתו מלאה$ bc -l <<< 5/2בכדי לשלוט על אורך השבר שמוצג נוכל להגדיר זאת על ידי שימוש במשתנה
2.50000000000000000000
scale
.$ bc <<< "scale=2; 5/2"את ה
2.50
awk
אנו מכירים וכן הוא יודע חשבון$ awk "BEGIN {print 5/2}"ניתן ליצור מביטוי ההוק alias על ידי השמה של
2.5
$*
וכך להשתמש בו כפקודה לכל דבר.את אותו רעיון ניתן לעשות כמובן עם כל אינטרפטר אחר שזמין במערכת כמו פייתון, php, node וכו'
$ echo 'calc(){ awk "BEGIN { print $*}"; }' >> ~/.bashrc
$ calc 5/2
2.5
עריכה: תודה לגולן על ההערה, הטריק הבא לא יעבוד בבאש אלא רק בזיש
$ echo $((5.0/2))
2.5
בבאש נעשה זאת כך $ printf %.2f\\n $((5/2))#arithmetic_expression
2.50
#expr
#awk
#let
#bc
@bash_tips