আন্ডারস্কোর দ্বারা অনুসরণযোগ্য ভেরিয়েবলের পরিবর্তনশীল প্রতিস্থাপন


12

পরিবর্তনশীল BUILDNUMBERমান 230. আমি আশা সেট করা হয় 230_কমান্ডের জন্য ছাপা হবে echo $BUILDNUMBER_কিন্তু নিচের চিত্রের আউটপুট খালি।

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

উত্তর:


27

কমান্ডটি echo $BUILDNUMBER_ভেরিয়েবলের মান প্রিন্ট করতে চলেছে $BUILDNUMBER_যা সেট করা নেই (আন্ডারস্কোরটি ভেরিয়েবলের নামের জন্য একটি বৈধ অক্ষর যা জেফ শ্যাচলার দ্বারা স্পষ্টভাবে উল্লেখ করা হয়েছে)

আপনাকে কেবল পরিবর্তনশীল নামের চারপাশে ব্রেস (কোঁকড়ানো বন্ধনী) প্রয়োগ করতে হবে বা সর্বাধিক অনমনীয় printfসরঞ্জামটি ব্যবহার করতে হবে :

echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"

PS: সর্বদা আপনার ভেরিয়েবলগুলি উদ্ধৃত করুন।


1
ডকুমেন্টেশন এবং স্ট্যান্ডার্ড শূন্য স্ট্রিংয়ের (একটি আনসেট ভেরিয়েবলের বিপরীতে) সেট করে চলকটির জন্য "নাল" শব্দটি ব্যবহার করে। আমি সম্পাদনার স্বাধীনতা গ্রহণ করেছি।
ilkkachu

8

জর্জ ভ্যাসিলিউ যেমন ইতিমধ্যে ব্যাখ্যা করেছেন , এর কারণ আপনি পরিবর্তকের $BUILDNUMBER_পরিবর্তে মুদ্রণ করছেন $BUILDNUMBER। আপনি যা চান তা পাওয়ার সর্বোত্তম উপায় হ'ল ${BUILDNUMBER}_জর্জের ব্যাখ্যা অনুসারে ব্যবহার করা। এখানে আরও কিছু বিকল্প রয়েছে:

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_

ভেরিয়েবল কী রাখে তা আমরা জানি তবে কী ধারণ করে তা আমরা জানি না $IFS, তাই echo $BUILDNUMBER"_"এখনও ভুল। তিনটির মধ্যে কেবলমাত্র printf '%s_\n' "$BUILDNUMBER"সঠিক যদি আমরা না জানি $BUILDNUMBERবা কী $IFSধরেছি।
স্টাফেন চ্যাজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.