היום למדתי: RANDOM ב zsh עלול להיות מבלבל
05/07/2023
ב bash המשתנה המיוחד RANDOM
מוחלף במספר אקראי. לכן אפשר לכתוב קוד כזה:
$ echo $0
bash
$ echo $RANDOM
5953
$ echo $RANDOM
12763
$ echo $RANDOM
2894
וזה עובד ממש בסדר. גם בתוך Subshells המשתנה RANDOM
ממשיך לעבוד ובגלל זה אפשר לכתוב גם את זה ב bash ולקבל שלוש שורות שונות בקובץ:
$ echo $0
bash
$ echo $RANDOM | tee -a numbers
3064
$ echo $RANDOM | tee -a numbers
4881
$ echo $RANDOM | tee -a numbers
6698
ב zsh ההתנהגות קצת יותר מבלבלת. בשורת הפקודה RANDOM
עדיין יתקדם ויציג כל פעם מספר אחר:
$ echo $0
-zsh
$ echo $RANDOM
4402
$ echo $RANDOM
2260
$ echo $RANDOM
12200
אבל הדפסת מספר אקראי בתוך Subshell לא משנה את המצב הפנימי של יצרן המספרים האקראיים ולכן הקוד הבא ידפיס תמיד את אותם שלושה מספרים לקובץ:
$ echo $RANDOM | tee -a numbers
27376
$ echo $RANDOM | tee -a numbers
27376
$ echo $RANDOM | tee -a numbers
27376
וכן עם tee זה לא בעיה כי רואים את המספרים. בפקודות אחרות שכותבות מספרים אקראיים למקומות אחרים זה עלול להיות פחות ברור, אז היו ערניים.