> ৩.৩ কে ভোট সহ স্ট্যাকওভারফ্লো উত্তরটিDIR
বর্তমান ব্যাশ স্ক্রিপ্টের ডিরেক্টরিতে নির্ধারিত করার জন্য এই ওয়ান-লাইনার বৈশিষ্ট্যযুক্ত :
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
নেস্টেড ডাবল-কোট দেখে আমি হতবাক হয়েছি। আমি যতদূর বলতে পারি, নিম্নলিখিত টুকরোগুলি ডাবল-কোটেড:
"$( cd "
"${BASH_SOURCE[0]}"
" && pwd )"
... এবং ডানদিকের সমস্ত কিছু =
(যেমন $( dirname
এবং )
) অব্যক্ত। অন্য কথায়, আমি ধরে নিয়েছি যে ২ য়, চতুর্থ এবং 6th ষ্ঠ "
অক্ষর "
যথাক্রমে প্রথম, তৃতীয় এবং ৫ ম অক্ষরকে "বন্ধ" করে ।
আমি বুঝতে পারছি ডাবল-কোটগুলি "${BASH_SOURCE[0]}"
কী অর্জন করবে, তবে অন্য দুটি জোড়া ডাবল-কোটের উদ্দেশ্য কী?
যদি অন্যদিকে (এবং উচ্চ ভোটের স্কোর সত্ত্বেও), উপরের স্নিপেটটি ভুল হয় তবে এর নামমাত্র অভিপ্রায় অর্জনের সঠিক উপায় কী?
( নামমাত্র অভিপ্রায় অনুসারে আমি বলতে চাইছি: ফিরে আসা ডিরেক্টরিটিতে pwd
প্রথমে-পরে ফিরে আসা মানটি সংগ্রহ করুন এবং সাব-শেল-এ-করে করুন, যাতে প্যারেন্ট শেলটি অপরিবর্তিত থাকে)।cd
dirname "${BASH_SOURCE[0]}"
cd
$PWD
lsb_dist="$(. /etc/os-release && echo "$ID")"; echo "$lsb_dist"
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
পাশাপাশি কাজ করে।
$( here, it's a subshell, but you are writing code as if you were writing it on the "first level" of the shell .... )
।