تعيين القيم للمتغيرات والثوابت
هنا حيث بدأت معرفتنا بالتوسع تؤتي ثمارها حقًا. كما رأينا ، يتم تخصيص قيم للمتغيرات بهذه الطريقة:
متغير=قيمنا
أين متغير هو اسم المتغير و قيمنا عبارة عن سلسلة. على عكس بعض لغات البرمجة الأخرى ، لا تهتم الصدفة بنوع البيانات المخصصة للمتغير. يعاملهم جميعًا كسلاسل. يمكنك إجبار الغلاف على تقييد التخصيص إلى أعداد صحيحة باستخدام أعلن الأمر مع -i الخيار ، ولكن ، مثل تعيين المتغيرات على أنها للقراءة فقط ، نادرًا ما يتم ذلك.
لاحظ أنه في الواجب ، يجب ألا تكون هناك مسافات بين اسم المتغير وعلامة يساوي والقيمة. إذن ما يمكن أن تتكون القيمة؟ أي شيء يمكننا توسيعه في سلسلة:
أ = ض
ب = "سلسلة"
c = "سلسلة و $ b"
d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta string \ n"
# قم بتعيين السلسلة "z" إلى المتغير a.
# يجب أن تكون المساحات المضمنة بين علامات الاقتباس.
# التوسعات الأخرى مثل المتغيرات يمكن أن تكون
# موسعة في المهمة.
# نتائج الأمر.
# التوسع الحسابي.
# تسلسل الهروب مثل علامات التبويب والأسطر الجديدة.
أ = ض
ب = "سلسلة"
c = "سلسلة و $ b"
d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta string \ n"
يمكن إجراء التخصيصات المتغيرة المتعددة على سطر واحد:
أ = 5 ب = "سلسلة"
أ = 5 ب = "سلسلة"
أثناء التوسيع ، قد تُحاط أسماء المتغيرات بأقواس معقوفة اختيارية "{}". يكون هذا مفيدًا في الحالات التي يصبح فيها اسم المتغير غامضًا بسبب المحتوى المحيط به.
نص. هنا ، نحاول تغيير اسم ملف من ملفي إلى ملفي 1، باستخدام متغير:
[me @ linuxbox ~] $ اسم الملف = "ملفي" [me @ linuxbox ~] $ المس اسم الملف $ [me @ linuxbox ~] $ mv $ filename $ filename1
mv: مُعامل ملف الوجهة مفقود بعد "myfile" جرب "mv --help" لمزيد من المعلومات.
[me @ linuxbox ~] $ اسم الملف = "ملفي" [me @ linuxbox ~] $ المس اسم الملف $ [me @ linuxbox ~] $ mv $ filename $ filename1
mv: مُعامل ملف الوجهة مفقود بعد "myfile" جرب "mv --help" لمزيد من المعلومات.
فشلت هذه المحاولة لأن الصدفة تفسر الوسيطة الثانية لـ mv الأمر كمتغير جديد (وفارغ). يمكن التغلب على المشكلة بهذه الطريقة:
[me @ linuxbox ~] $ mv $ filename $ {filename} 1
[me @ linuxbox ~] $ mv $ filename $ {filename} 1
بإضافة الأقواس المحيطة ، لم تعد الصدفة تفسر الزائدة 1 كجزء من اسم المتغير.
سننتهز هذه الفرصة لإضافة بعض البيانات إلى تقريرنا ، أي تاريخ ووقت إنشاء التقرير واسم مستخدم المنشئ:
#! / بن / باش
# برنامج لإخراج صفحة معلومات النظام TITLE = "تقرير معلومات النظام لـ $ HOSTNAME"
CURRENT_TIME = $ (التاريخ + "٪ x٪ r٪ Z")
TIMESTAMP = "تم توليده $ CURRENT_TIME ، بواسطة $ USER"
صدى صوت "
العنوان $
العنوان $
TIMESTAMP دولار
"
#! / بن / باش
# برنامج لإخراج صفحة معلومات النظام TITLE = "تقرير معلومات النظام لـ $ HOSTNAME"
CURRENT_TIME = $ (التاريخ + "٪ x٪ r٪ Z")
TIMESTAMP = "تم توليده $ CURRENT_TIME ، بواسطة $ USER"
صدى صوت "
العنوان $
العنوان $
TIMESTAMP دولار
"