نص برمجي لـ Automator Bash LC_ALL="C"

الرد7

عندما أكتب برنامجًا نصيًا لـ Automator لتشغيل برنامج bash ، لا يتم تعيين متغيرات البيئة "locale" على قيمة النظام الحالية ، ولكن يتم تعيينها افتراضيًا على "C".

مثال على نص برنامج Automator:

- تنفيذ برنامج شيل

- شل:/bin/bash

- محتوى البرنامج النصي:

محلي

استجابة وقت التشغيل:

(

"LANG ="،

"LC_COLLATE =" C "،

"LC_CTYPE =" C ""،

"LC_MESSAGES =" C "،

"LC_MONETARY =" C "،

"LC_NUMERIC =" C "،

"LC_TIME =" C "،

"LC_ALL ="

)

بالرغم من أن نظامي مهيأ جيدًا افتراضيًا باعتباره من الإعدادات المحلية LANG=fr_FR.UTF8 وأن هذه الإعدادات يتم وضعها بشكل صحيح عند تشغيل وحدة التحكم.

كيف يمكنني ، في البرنامج النصي الخاص بـ Automator ، استرداد القيم الافتراضية المعينة على النظام دون الحاجة إلى فرضها بشكل تعسفي؟

MacBook Pro مع شاشة Retina ، OS X El Capitan (10.11.6)

قائمة الإجابات

  1. 0

    لدي نفس الملاحظة مثلك ...

    إذا كتبت الأمر

    do shell script "locale"

    في AppleScript

    أحصل على نفس النتيجة التي حصلت عليها.

    لقد طرحت السؤال للتو على صديق مهاراته في AppleScript أكثر شمولاً من مهاراتي ، وبمجرد الحصول على إجابة ، سأخبرك بذلك.

    Cdlt

    0
  2. 0
  3. √إجابة مقبولة0

    شكرًا على الارتباط ، لكنني أنجزت خدمات من خلال Automator من قبل ولم أواجه أي مشاكل معينة.

    هنا أقوم بإنشاء تطبيق والسؤال مختلف بعض الشيء ...

    لقد أحرزت تقدمًا جيدًا في فكرتك المتعلقة بإضافة واجهة أمامية بخط التفاح ، ويبدو أن كل شيء يعمل بشكل جيد ، باستثناء ...

    عندما يقوم Automator بتشغيل طبقة نص تفاح ، فإنه يعرض بشكل رسمي نافذة خطأ غامضة عندما لا يتم تقديم ملف إليها ، على الرغم من التعامل مع الحالة بشكل مثالي في الكود ، إلا أنه يعمل بشكل جيد جدًا ويطلق تطبيقي بشكل مثالي عبر bash shell. هناك "خطأ" آخر في Automator ، أخشى ...

    Grrr!

    0
  4. 0

    لقد تمكنت أخيرًا من حل مشكلتي

    إليك الحل:

    في Automator ، أبدأ بقشرة نصية تفاح:

    على المدى البعيد

    اضبط اسم الملف على ""

    عيّن اللغة إلى لغة المستخدم (الحصول على معلومات النظام) & ".UTF-8"

    عيّن fileAlias ​​على العنصر 1 من argv كسلسلة

    إذا كان fileAlias ​​لا يساوي "" إذن

    عيّن اسم الملف على مسار POSIX الخاص بملف ألياس

    تنتهي إذا

    لغة الإرجاع & "\ n" & اسم الملف

    نهاية الجري

    ثم نص باش:

    IFS="\ n" read -r -a مجموعة <<< "$ @"

    locale="$ {array [0]}"

    تصدير LANG=$ locale

    اسم الملف="$ {array [1]}"

    nohup/usr/local/bin/my_program $ filename>/dev/null 2> & 1 &

    وكل شيء يعمل بشكل جيد

    أستخدم حرف "\ n" كفاصل والذي لا يمكن أن يكون جزءًا من اللغة ولا

    من اسم الملف. ثم قمت بعد ذلك بتقسيم الاستجابة من نص التفاحة باستخدام هذا الفاصل

    وبالتالي يسترد اللغة وأي اسم ملف. ثم أقوم بتشغيل البرنامج

    "/usr/local/bin/my_program" بصيغة غريبة ("nohup" + the final "&") والتي تسمح

    لفصل العملية عن المشغل الآلي الذي ينتهي بعد ذلك بشكل طبيعي ،

    عملية البرنامج ثم تعمل في الخلفية.

    كان من الممكن أن يكون الوضع المثالي هو القدرة على عرض العديد من الحجج من مخطوطة التفاح الخاصة بـ

    قدم $ @ بشكل صحيح إلى الصدفة ، لكني لا أعرف كيفية القيام بذلك (أو لا أعرف ما إذا كان ذلك ممكنًا).

    يمكننا بنفس الطريقة استرداد "معلومات النظام الأخرى (مثل الدليل

    )

    المستخدم ، على سبيل المثال) لإكمال تهيئة shell.

    إنها طريقة رخيصة لمحاكاة تطبيق OS X من برنامج خط

    أمر غير مضغوط لنظام التشغيل OS X دون الحاجة إلى المرور عبر وحدة التحكم والكتابة

    نص ويمكننا أيضًا ربط أنواع الملفات بهذا التطبيق الذي يتم فتحه بعد ذلك

    تلقائيًا بمجرد النقر عليها نقرًا مزدوجًا في Finder. لا يمكننا

    ومع ذلك ، يموت ملف واحد فقط من Finder (ولكن يمكن حل ذلك

    ببساطة عن طريق ربط أسماء الملفات في حلقة نصية تفاح).

    أتمنى أن يساعد هذا شخصًا ما يومًا ما ، وذلك بفضل كل من قام بالرد

    لقد دعمتني جيدًا.

    0
  5. 0

    أرفع قبعتي إليك!

    هل يمكنك وضع علامة محلول على الموضوع؟

    0
  6. 0

    تم بالفعل ؟؟؟؟

    0
  7. 0

    من فضلك ؟؟؟؟

    مساء الخير

    0

اترك رد

التفاح الاسلام © 2023.All Rights Reserved.