joebloggsকোনও অতিরিক্ত প্রক্রিয়া ছাড়াই প্যারামিটার সম্প্রসারণ ব্যবহার করে ব্যাশটিতে এই স্ট্রিং থেকে নিষ্কাশন করতে ...
MYVAR="/var/cpanel/users/joebloggs:DNS9=domain.com"
NAME=${MYVAR%:*} # retain the part before the colon
NAME=${NAME##*/} # retain the part after the last slash
echo $NAME
joebloggsপথে কোনও নির্দিষ্ট গভীরতায় যাওয়ার উপর নির্ভর করে না ।
সারসংক্ষেপ
রেফারেন্সের জন্য কয়েকটি প্যারামিটার সম্প্রসারণ মোডগুলির একটি ওভারভিউ ...
${MYVAR#pattern} # delete shortest match of pattern from the beginning
${MYVAR##pattern} # delete longest match of pattern from the beginning
${MYVAR%pattern} # delete shortest match of pattern from the end
${MYVAR%%pattern} # delete longest match of pattern from the end
সুতরাং #শুরু থেকে ম্যাচ মানে (কোনও মন্তব্য লাইনের কথা ভাবেন) এবং এর %অর্থ শেষ থেকে। একটি উদাহরণের অর্থ সংক্ষিপ্ততম এবং দুটি উদাহরণের অর্থ দীর্ঘতম।
আপনি সংখ্যা ব্যবহার করে অবস্থানের ভিত্তিতে সাবস্ট্রিংগুলি পেতে পারেন:
${MYVAR:3} # Remove the first three chars (leaving 4..end)
${MYVAR::3} # Return the first three characters
${MYVAR:3:5} # The next five characters after removing the first 3 (chars 4-9)
আপনি ব্যবহার করে নির্দিষ্ট স্ট্রিং বা নিদর্শনগুলি প্রতিস্থাপন করতে পারেন:
${MYVAR/search/replace}
patternফাইল-নাম ম্যাচিং হিসাবে একই বিন্যাসে, তাই *(যে কোন অক্ষর) সাধারণ, প্রায়ই মত একটি নির্দিষ্ট প্রতীক দ্বারা অনুসরণ /বা.
উদাহরণ:
মত একটি ভেরিয়েবল দেওয়া
MYVAR="users/joebloggs/domain.com"
ফাইলের নামটি ছেড়ে যাওয়ার পথ (একটি স্ল্যাশ পর্যন্ত সমস্ত অক্ষর) সরান:
echo ${MYVAR##*/}
domain.com
পথ ছেড়ে ফাইলের নামটি সরিয়ে ফেলুন (শেষের পরে সংক্ষিপ্ততম মিলটি মুছুন /):
echo ${MYVAR%/*}
users/joebloggs
কেবলমাত্র ফাইলের এক্সটেনশন পান (শেষ সময়ের আগে সমস্ত মুছে ফেলুন):
echo ${MYVAR##*.}
com
দ্রষ্টব্য: দুটি ক্রিয়াকলাপ করতে, আপনি সেগুলি একত্রিত করতে পারবেন না, তবে একটি মধ্যবর্তী ভেরিয়েবলকে বরাদ্দ করতে হবে। সুতরাং পথ বা এক্সটেনশন ছাড়াই ফাইলের নাম পেতে:
NAME=${MYVAR##*/} # remove part before last slash
echo ${NAME%.*} # from the new var remove the part after the last period
domain