שאלה על סקריפ בלינוקס - לולאת while... - לינוקס, Mac ומערכות הפעלה אחרות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


Golden Fish

Recommended Posts

שלום,

אשמח אם תוכלו לעזור לי, אני יודע שרוב ההודעות כאן הם רק על התקנות וכמה יפה אבל אני יותר מתעניין בפקודות של ה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 צריך להעריך את המשתנה הזה הוא קורא את הקלט עד לסוף השורה הנוכחית ויחזיר את הערך הזה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...