Bash Tips
984 subscribers
14 photos
4 files
45 links
רוצים להשתמש בלינוקס אבל לא ממש מכירים את הכלים שהיא מספקת לעבודה?

בערוץ הבא תמצאו אוסף טיפים שימושיים ב-Bash והכרות עם כלים שונים שעשויים לחסוך מאמץ ועבודה בכתיבת סקריפטים ומימוש אוטומציות.
Download Telegram
נקודה צפה
רמת קושי: #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}"
2.5

ניתן ליצור מביטוי ההוק alias על ידי השמה של $* וכך להשתמש בו כפקודה לכל דבר.
את אותו רעיון ניתן לעשות כמובן עם כל אינטרפטר אחר שזמין במערכת כמו פייתון, php, node וכו'

$ echo 'calc(){ awk "BEGIN { print $*}"; }' >> ~/.bashrc
$ calc 5/2
2.5

עריכה: תודה לגולן על ההערה, הטריק הבא לא יעבוד בבאש אלא רק בזיש

$ echo $((5.0/2))
2.5

בבאש נעשה זאת כך

$ printf %.2f\\n $((5/2))
2.50


#arithmetic_expression
#expr
#awk
#let
#bc

@bash_tips