هل هناك فرق بين استخدام تنضيدها في ksh ببساطة وضع متغير ؟

StackOverflow https://stackoverflow.com/questions/1027869

  •  06-07-2019
  •  | 
  •  

سؤال

هي التالية 2 خطوط تماما ما يعادل?إن لم يكن ما هو الفرق ؟ لقد رأيت الكثير من البرامج النصية قذيفة الاستفادة من رقم 1 و أتساءل فقط ما يعطيك مقارنة مع عدد 2.

  1. typeset TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
  2. TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
هل كانت مفيدة؟

المحلول

typeset سيتم إنشاء متغير محلي (التي لا "تسرب").وهذا مفيد في الوظائف ولكن رأيت أيضا استخدامه على أعلى مستوى من قذيفة النصي.

a=0
function x {
    typeset a=1
}
x
echo $a
function y {
    a=2
}
y
echo $a

طباعة

0
2

يمكنك أيضا استخدام typeset لإنشاء المصفوفات و الاعداد الصحيحه.

[عدل] وأضاف function الكلمة لأن بعض قذائف تتطلب ذلك.لإزالته إذا كان يسيء shell الخاص بك ولكن يجب أن تعمل مع معظم إصدارات.

نصائح أخرى

منذ shell scripting هي فضفاضة كتابة اللغة (التي متغيرات لن يكون datytype) يمكننا استخدام تنضيدها لتعيين متغير معين على نفس نوع البيانات من القيم فقط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top