מה ההבדל בין ציטוטים בודדים כפול ב Bash Shell?
סגירת טקסט במרכאות היא נוהג רגיל למדי על שורת הפקודה, במיוחד כאשר מתמודדים עם קבצים בעלי רווחים בשמות, אבל איך אתה יודע אם להשתמש במרכאות בודדות או כפולות? בואו נסתכל על ההבדל, וכאשר אתה צריך להשתמש אחד לעומת השני.
הכלל הוא כי ציטוטים כפולים עדיין לאפשר הרחבה של משתנים בתוך הציטוטים, וציטוטים בודדים לא. המשך לקרוא.
ציטוטים עם טקסט פשוט
אם אתה פשוט מצרף כמה מילים של טקסט, זה באמת לא משנה איזה מהם אתה משתמש, כמו שניהם יעבדו בדיוק אותו דבר. לדוגמה, שתי הפקודות הללו ייווצרו ספרייה בשם Test Directory:
mkdir "מבחן מדריך"
mkdir 'מבחן מדריך'
סוגים מנוסים יותר יהיה כנראה לציין כי אתה יכול גם להשתמש mkdir מבחן \ מדריך אם רצית.
הרחבת המשתנה מעטפת
ההבדל בין ציטוטים יחידים לבין ציטוטים כפולים הופך להיות חשוב יותר כאשר אתה מתמודד עם משתנים בשורת הפקודה, כברירת מחדל, באש הולך להרחיב משתנה כמו $ $ למחרוזת המלאה. ראשית, נקצה את המשתנה:
test = "זהו מבחן"
עכשיו אתה יכול להשתמש משתנה זה על שורת הפקודה, כמו זה, אשר צריך פשוט פלט זה מבחן אל המסוף:
מבחן echo $
זה המקום שבו ההבדל בין ציטוטים כפולים בודדים הופך ברור יותר, כאשר אתה משתמש ציטוטים בודדים המשתנים לא הולכים להיות מורחבת. לדוגמה, אם תפעיל פקודה זו:
הד 'מבחן $'
לא תראה דבר מלבד '$ test' בשורת הפקודה כאשר תשתמש במרכאות בודדות, אך היא תוצג כהלכה בעת שימוש במרכאות כפולות:
אותו דבר עובד כאשר אתה משתמש 'אופי כדי להרחיב את הפקודה על שורת הפקודה. למשל, נניח שאתה רוצה להשתמש pwd הפקודה מתוך פקודה אחרת - היית משתמש backticks לספר את הקליפה כדי להרחיב אותו:
הד 'pwd' / מבחן
אם היית בתיקייה הביתית שלך היית רואה פלט שנראה כך:
/ home / חנון / בדיקה
למשל, אתה נמצא בתיקיה עם רווח בנתיב, וברצונך להשתמש בפקודה ln כדי ליצור קישור סמלי לקובץ בספריה הנוכחית. אתה בדרך כלל צריך לציין את הנתיב המלא בעת שימוש בפקודה ln, אז זה הרבה יותר קל להשתמש 'pwd' כדי לשמור הקלדה.
ראה מה קורה כאשר אתה מנסה להשתמש בפקודה מבלי לכלול במרכאות:
ln-s 'pwd' / test / home / geek / linkedname
במקום זאת, עליך להקיף ציטוטים:
ln -s "'pwd' / filename '/ some / other / path
לקבלת דוגמה מוחשית יותר, נניח שיש לנו מבנה תיקיות כמו בדוגמה זו, שבה לכל שמות הקבצים יש רווחים בהם:
מאחר שהפקודה Unzip אינה תומכת בשימוש * כדי להפעיל אותה כנגד כל הקבצים, יהיה עליך להשתמש בפקודה for במקום. כאן הדברים נהיים מעניינים:
עבור f * ב - zip; לעשות unzip $ F; לעשות
אופס! נראה שזה לא עובד.
מה שנצטרך לעשות הוא להשתמש במרכאות כפולות סביב המשתנה $ f, כך:
עבור f. * .zip, לעשות לפתוח "$ f"; נעשה
עכשיו בכל פעם את הפקודה עבור עובר את הלולאה, זה הולך למעשה להפעיל פקודה כמו זה:
unzip "מבחן 1.zip"
כמובן שזה יהיה לולאה דרך ולהפעיל פקודה דומה עבור כל קובץ במדריך.
בואו נבדוק
כעת, לאחר שעברנו את הדוגמאות, אנו נסקור במהירות אם החמצת את זה:
ציטוטים כפולים
- השתמש כאשר ברצונך לצרף משתנים או להשתמש הרחבת פגז בתוך מחרוזת.
- כל התווים בתוך מתפרשים כתווים רגילים למעט $ או 'אשר יורחב על הקליפה.
ציטוטים בודדים
- כל התווים בתוך ציטוטים בודדים מתפרשים כתו מחרוזת.
ובכך מסיים את הלקח של ציטוטים. השתמש בהם בתבונה.