سؤال

مستخدم Cygwin هنا (على الرغم من أنه إذا كان هناك حل مناسب ، فسوف أحمله إلى K/Ubuntu ، والذي أستخدمه أيضًا).

لدي رسالة ترحيب في بلدي .bashrc تشبه ما يلي:

SAD=(`date +%A-%B-%d-%Y`)
DUB=(`date -u +%k:%M`)
printf "Today's Date is: ${SAD}.\n"
printf "Dublin time is now ${DUB}. (24-Hour Clock)\n"

بعد محاولات عديدة لاستخدام مساحات بيضاء في المتغير المحزن أعلاه ، استسلمت في الواصلة واستخدمت. لكنني ، من المفهوم ، غير راضٍ عن حل الإسعافات الفضائية هذا. كانت المشكلة ، كما أذكر ، أنه في كل مرة حاولت فيها استخدام مساحة مقتبسة ، s أو بعض علامة الهروب المماثلة ، إلى جانب المتغيرات المدرجة في القسم المناسب من MinPage GNU تاريخ, ، تم تجاهل المتغير للعام أو إعادة خطأ. ما لا أريد القيام به هو اللجوء إلى السلسلة الكاملة كما تم إرجاعها بواسطة تاريخ, ، ولكن بدلاً من ذلك للحفاظ على الترتيب الذي لدي أشياء في الكود أعلاه.

عندما أكتب هذا ، يحدث لي أن إعداد IFS حول هذا الرمز لرسالة الترحيب قد يعمل ، شريطة أن أعيدها إلى الإعدادات الافتراضية بعد ذلك (يظهر أعلاه في الأسطر 13-17 من 68 سطر .bashrc). ومع ذلك ، لا أستطيع أن أتذكر كيفية القيام بذلك ، ولا أنا متأكد من أنها ستنجح.

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

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

BZT

هل كانت مفيدة؟

المحلول

وضع

SAD=$(date "+%A %B %d %Y")
DUB=$(date -u +%k:%M)
echo "Today's Date is: ${SAD}."
echo "Dublin time is now ${DUB}. (24-Hour Clock)"

في .bash_profile مطبوعات

Today's Date is: Thursday February 18 2010.
Dublin time is now 12:55. (24-Hour Clock)

أعتقد أن هذا ما تريده.

نصائح أخرى

المشكلة هي إعلان الصفيف الخاص بك.

SAD=(date +%A-%B-%d-%Y) يعني فقط أنك تضع السلسلة "تاريخ" كعنصر 0 ، و "+٪ a- ٪ b- ٪ d- ٪ y" كعنصر 1. انظر بنفسك

$ SAD=(date +%A-%B-%d-%Y)  #<-- this is an array declaration
$ echo ${SAD[0]}
date
$ echo ${SAD[1]}
+%A-%B-%d-%Y

إذا كنت تريد أن تكون أمر "Date" في متغير ، فاستخدم $(..), ، على سبيل المثال

$ SAD=$(date +%A-%B-%d-%Y)
$ echo ${SAD}
Thursday-February-18-2010

للحصول على المسافات ، تحتاج إلى اقتباس الحجة date بحيث تكون سلسلة واحدة. أنت أيضًا تعلن عن طريق الخطأ SAD و DUB كما المصفوفات ، عندما كان ما قصدته حقًا هو تقييمها. جرب هذا:

[/tmp]> $(date "+%A %B %d, %Y")
Thursday February 18, 2010

date +%A\ %B\ %d\ %Y

لقد وجدت المجموعة التي تعمل:
SAD=$(date "+%A %B %d %Y")
echo $SAD
الخميس 18 فبراير 2010

مثال آخر عندما:

  1. من المفيد طرح سؤال
  2. يساعد في معرفة مكان وضع اقتباساتك المزدوجة.
    تاريخ من الواضح أنه لا يعرف من المساحة المقتبسة ، لكن باش يفعل ذلك ، لذلك
    إنها مسألة "تهمس في الأذن اليمنى".

شكرا لك ghostdog74.

BZT

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