תיקון: שגיאת תחביר ליד אסימון לא צפוי `(& lsquo;

שגיאת התחביר של הודעת השגיאה ליד אסימון לא צפוי `(' מתרחשת בסביבה מסוג Unix, Cygwin ובממשק שורת הפקודה ב- Windows. שגיאה זו תופעל ככל הנראה כשתנסה להריץ סקריפט פגז אשר נערך או נוצר במערכות DOS / Windows או Mac ישנות יותר.

שגיאת תחביר ליד אסימון לא צפוי '('

הודעת שגיאה זו מופיעה גם כאשר אתה מזין פקודות בשורת הפקודה של לינוקס למשימות יומיומיות כגון העתקת קבצים באופן ידני וכו '. הסיבות העיקריות להופעת הודעת שגיאה זו הן בגלל תחביר רע או בעיה של מערכת ההפעלה בפירוש פקודות של מערכת אחרת / צדף.

מה גורם לשגיאת תחביר ליד אסימון לא צפוי `('?

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

  • תחביר לקוי בעת ביצוע פקודה כלשהי בשתי הפלטפורמות. או שאתה לא משתמש בפקודה כהלכה או שהזנת תחביר שגוי.
  • המעטפת אינה תואמת בין מערכות יוניקס / DOS.
  • ישנן בעיות בהפעלת סקריפט ה- bash shell ממקור אחר .

במאמר זה אנו מניחים שאתה יודע את יסודות הקידוד ויש לך מושג מה אתה עושה. אם אתה מתחיל, עדיף שתעקוב אחר מדריכים מעמיקים של השפה / הפקודה שאתה מנסה לבצע. כנראה שטעית בתחביר כלשהו.

פתרון 1: בדיקת תחביר ועיצוב של פקודות

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

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

לדוגמא, במקום הקוד הבא

[mycom7] # ./ctopo.sh um_test1 [(1,2), (2,1)]

אתה צריך לבצע את זה כ

[mycom7] # ./ctopo.sh um_test1 "[(1,2), (2,1)]"

כמו כן, וודא שאתה מבצע את הפקודות / סקריפט הפגז כהלכה אם הוא משתרע על מספר שורות.

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

פתרון 2: פתרון בעיות בסקריפט הפגז שלך

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

נסה להריץ את המעטפת עם הפרמטר 'vx'. זה יראה לנו אילו פקודות מופעלות ואילו ערכים מאוחסנים בסקריפט. דרך כאן תוכלו לפתור בעיות ולאבחן מה משתבש.

לדוגמה, בצע את הסקריפט במסוף לאחר הכללת 'vx' כ:

# sh -vx ./test_script5.sh

אתה יכול לבדוק את תוכן הסקריפט באמצעות הפקודה 'חתול' כ:

# חתול test_script5.sh

פתרון 3: שימוש בפקודה 'dos2unix.exe'

בקבצי טקסט של Windows / DOS, שורה חדשה היא שילוב של Carriage Return (\ r) ואחריו Feed Line (\ n). ב- Mac (לפני Mac OS X), הפסקת קו השתמשה ב Carriage Return (\ r). יוניקס / לינוקס ו- Mac OS X משתמשים בהפסקות שורה של Feed Feed (\ n). אם אתה משתמש ב- Cygwin, הוא לא יצליח לעבד את הסקריפטים שיוצרו על ידי DOS / Windows ו- Mac ישן יותר בגלל התו הנוסף של Carriage Return.

שימוש בפקודה 'dos2unix.exe'

כאן תוכלו לבצע את הפקודה 'dos2unix.exe' שתמיר את הסקריפט לפורמט הנכון ואז תוכלו לבצע אותו ללא בעיות.

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