סקריפט BASH בTCSH

בעל10

New member
סקריפט BASH בTCSH

מצאתי סקריפט שמחליף את פקודת הCD בפקודה שמאפשרת גם לחזור לתיקייה הקודמת הקודמת "cd -2" לדוגמה:
http://linuxgazette.net/109/marinov.html
הוספצי אותו בsource לקובץ ~/.tcshrc
הבעיה היא שאני מקבל את השגיאה הזאת כל פעם שאני מנסה לעשות source ל~/.tcshrc:
Badly placed ()'s.

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

aviMalool

New member
מהשגיאה נדמה לי שהבעיה מתחילה בסקריפט עצמו

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

Dניאל Mור

New member
שאלונת (אולי אפילו TIP)

במידה ואתה מעוניין "לשחק" עם מעבר בין תיקיות, האם יצא לך להכיר את p ushd/p opd? אם לא, קרא עליהן קצת. מגניב לגמרי


בהצלחה רבה.

+דניאל.
 
אם אתה בסביבת tcsh

אז כדי לגרום לתסריט לרוץ עם המפענח של bash עליך להוסיף שורה בתחילתו שמפנה למפענח הנכון.
משהו בסגנון:

#! /bin/bash

אחרת הוא "ינסה" לרוץ על המפענח של tcsh, שכמובן לא יפענח אותו.
 
על איזו שורה הוא כותב לך את הודעת השגיאה?

אצלי זה "עובד" (יש בעיה עם bind בשורה 60, אבל זו כבר שגיאה אחרת).

הפעלתי אותו מתוך zsh לצורך הבדיקה, ומbash לצורך השוואה. בשניהם אותה הבעיה (לא חופר, בדקתי רק כדי להשיב לך).
 

בעל10

New member
איך אני יודע על איזו שורה?

הוא פשוט פשוט כותב לי אותה בלי פירוט
 
לי הוא כותב גם את מספר השורה.

אתה יכול לנסות להוסיף exit במקומות אקראיים ולראות היכן נוספת לך הודעת השגיאה.
 

בעל10

New member
הוא לא מוכן לקבל את הפונקציה בכלל

מחקתי את הכל חוץ מההצהרה של הפונקציה והא עדיין נותן את אותה שגיאה.
עשיתי נסיון לשנות את פקןדת הSOURCE לכזה דבר:
source `command.sh`
כשהBACKTICK מקיף את הסקריפט ואז הוא לא נותן הודעת שגיאה(רק אזהרה על שורה 60) אבל גם לא עושה כלום.
 

aviMalool

New member
האם תוכל להעתיק לכאן את הפונקציה?

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

בעל10

New member
היא נמצאת בקישור בשאלה הראשונה שלי

נראה לי לא יעיל להעתיק אותה לכאן.
 

BravoMan

Active member
אני חושב שהבעיה שלך נעוצה בכך שאתה מנסה לעשות

source לסקריפט שלא תואם את המפרש שאתה עובד איתו.
הפקודה source פשוט "מדביקה" את תוכן הסקריפט למקום בו כתבת אותה וממשיכה לבצע שורה שורה עם אותו מפרש שכבר רץ.

גם לשים "שאבנג" (!#) לא יעזור, כי הסימון המיוחד הזה עובד רק בשורה הראשונה של הסקריפט, וכאן יוצא כאילו שמת אותו באמצע.

הפתרון הוא, בהנחה שהסקריפט עצמו תקין (לא בדקתי), היא לשים אותו בצד, לא לעשות לו source, אלא פשוט ליצור ידנית (או בתוך tshrc) הגדרת alias שתכוון עליו.

בהצלחה!
 

בעל10

New member
אני חושב שאתה צודק

אני אנסה במהלך היום ואשתדל לחזור לדווח
 

aviMalool

New member
מה בדיוק נשאר אחרי שמחקת שאינו מוכן לקבל?

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