עבור לתוכן

שאלה על סקריפ בלינוקס - לולאת while...

Featured Replies

פורסם

שלום,

אשמח אם תוכלו לעזור לי, אני יודע שרוב ההודעות כאן הם רק על התקנות וכמה יפה לינוקס אבל אני יותר מתעניין בפקודות של הshell אז אם יש צדיק...בבקשה

לדוגמה הקוד הנ"ל , שאלתי היא מה בדיוק הביטוי בתוך ה while אומר , אני יודע שזה ביטוי בוליאני ששואל האם מספר השורות במשתנה line שונה מ0 אבל מזה הסוגריים המסולסלות ומתי משתמשים ואיך מספר השורות קטן בדיוק, כך שהלולאה תעצור?


set line = ($<)
set i = 0
while (${#line} !=0)
@i = $i + $line[3]
echo $line
set line = ($<)
end

תודה

אוקי די הבנתי את את הביטוי בלולאה אבל עדיין לא איך המשתנה LINE קטן...?

פורסם

זה נראה לי כמו קוד של csh

עצה מס 1 תתרחק מ csh ותשתמש רק ב bash או אפילו ב perl/python

ולשאלתך הסוגריים המסולסלות מסמנות את גבולות המשתנה line#. למעשה X$ הוא קיצור של {X}$. הביטוי מכיל את מספר האברים בוקטור line. חוקי התחביר העקומים של csh נותנים לביטוי $# עדיפות ואז הביטוי היה השירשור של #$ עם המילה line שכנראה תתן שגיאת הרצה (כנראה אין לי csh מין לבדוק).

הלולאה תעצר כאשר הקלט יהיה שורה ריקה .

פורסם
  • מחבר

האמת כמעט ולא הבנתי כלום ממה שרשמת...אבל בכל זאת אולי אני אדייק בשאלתי...

ואין שגיאת תחביר. הקוד הזה המייצג את מספר הארגומנטים ב line כלומר מספר השורות


${#line}

שאלתי היא איך מתבצע השימוש בפקודה (>$) (שמקבלת קלט) וליתר דיוק הקוד הנ"ל


echo $line
set line = ($<)

תודה

פורסם

אני שוב רוצה להדגיש אם אין לך סיבה ממש טובה אז אל תתעסק עם csh תעבור לbash/

האמת כמעט ולא הבנתי כלום ממה שרשמת...אבל בכל זאת אולי אני אדייק בשאלתי...

ואין שגיאת תחביר. הקוד הזה המייצג את מספר הארגומנטים ב line כלומר מספר השורות

לא זה מספר המילים במשתנה line לא מספר השורות.

$ csh
% set line=(foo bar baz)
% echo $line
foo bar baz
% echo ${#line}
3
% echo $#line
3

אני רואה שבגרסאות האחרונות של csh זה כבר לא נותן שגיאה.

שאלתי היא איך מתבצע השימוש בפקודה (>$) (שמקבלת קלט) וליתר דיוק הקוד הנ"ל


echo $line
set line = ($<)

>$ זה פסדו-משתנה (builtin). כאשר csh צריך להעריך את המשתנה הזה הוא קורא את הקלט עד לסוף השורה הנוכחית ויחזיר את הערך הזה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים