এই প্রসঙ্গে $ {1: 0: 2? এর অর্থ কী?


19

আমি নীচে প্রদর্শিত কোডটি সন্ধান করছি এবং যদি সারি / কলাম আর্গুমেন্টগুলি হয় -rবা দিয়ে শুরু হয় তবে এটি ইনপুটটি পরীক্ষা করে -c${1:0:2}এই প্রসঙ্গে অর্থ কী ?

rowArgName="-r"
colArgName="-c"
if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ]
then
   echo $correctCmdMsg >&2
   exit 1
fi

7
আপনি প্রশ্নের মধ্যে যে শেলটি ব্যবহার করছেন তা আপনার অন্তর্ভুক্ত করা উচিত। যা সম্ভবত bash
রাফেল অহরেন্স

2
এটি কমান্ড লাইন যুক্তি পার্স করার জন্য করা হয়েছে বলে মনে হচ্ছে। সম্ভবত আপনি জানতে getoptবা getoptsআপনার জীবনকে আরও সহজ করতে চাইবেন (বা যাঁর জীবন এটি করেছেন)।
কার্লোস ক্যাম্পাদ্রেস

উত্তর:


31

এটি শেলের একটি সাবস্ট্রিং এক্সপেনশন (প্যারামিটার এক্সপেনশনের সাবক্লাস) প্যাটার্ন।

বিন্যাসটি হ'ল:

${parameter:offset:length}

এবং সূচী 0 থেকে শুরু হয়।

বলুন, আপনার একটি পরিবর্তনশীল রয়েছে foo, তারপরে ${foo:0:2}প্রথম দুটি অক্ষর পাওয়া যায় (0 পরবর্তী অবস্থান থেকে 0)।

উদাহরণ:

$ foo=spamegg
$ echo "${foo:0:2}"
sp

আপনার ক্ষেত্রে, প্রথম সংখ্যাটি 1ভেরিয়েবলের নাম বোঝায় $1, যা কমান্ড লাইনের (মূল প্রোগ্রামে) বা ফাংশনে প্রথম আর্গুমেন্টের মাধ্যমে পাস হওয়া প্রথম যুক্তি।

সুতরাং আপনার ক্ষেত্রে, "${1:0:2}"হবে:

  • সূচক 0 থেকে প্রথম অক্ষর থেকে শুরু করে স্ট্রিংগুলি বের করা শুরু করুন

  • এবং পরবর্তী দুটি অক্ষর পর্যন্ত চালিয়ে যান

সুতরাং অপারেশনের পরে আপনি ইনপুট স্ট্রিংয়ের প্রথম দুটি অক্ষর (0 এবং 1 তে সূচিত) পাবেন।

[ "${1:0:2}" != $rowArgName ]এবং [ "${1:0:2}" != $colArgName ]যদি আউটপুট subtring কিছু অন্যান্য স্ট্রিং সমান যাচাই করছি।


1
মূলত এটি ব্যবহারকারীর সাথে -cor 1 সরবরাহ করেছে কিনা তা যাচাই করে দেখছে -r, সম্ভবত এটি আরও ভালভাবে প্রয়োগ করা হয়েছেgetopts
সের্গি কলডিয়াজহনি

15

এর থেকে একটি ছোট এক্সট্র্যাক্ট man bash:

$ {পরামিতি: অফসেট: দৈর্ঘ্য}

সাবস্ট্রিং প্রসার । দ্বারা বর্ণিত অক্ষর থেকে শুরু lengthকরার মানটির অক্ষর পর্যন্ত প্রসারিত parameterহয় offset। তাহলে প্যারামিটার @, একটি সূচীবদ্ধ অ্যারে দ্বারা subscripted @বা *, অথবা একটি এসসিয়েতিভ আরে নাম, ফলাফল হিসাবে নীচে বর্ণিত পৃথক। যদি lengthবাদ দেওয়া parameterহয় তবে নির্দিষ্ট করা অক্ষর থেকে শুরু offset করে মানের শেষে প্রসারিত হওয়ার মানের স্ট্রিংগুলিতে প্রসারিত হয়। length এবং offset গাণিতিক এক্সপ্রেশন (নীচে কৃত্রিম মূল্যায়ন দেখুন)।


5

এটি একটি ভেরিয়েবল থেকে একটি সহজ সাবস্ট্রিং নিষ্কাশন। প্রশ্নের মধ্যে পরিবর্তনশীল হ'ল স্ক্রিপ্টের প্রথম পরামিতি (যা 1)।

যদি আমার একটি চলক, এফওও থাকে তবে এর মানের প্রথম দুটি অক্ষর আমি দেখতে পাচ্ছি ${FOO:0:2}। প্রথম যুক্তি দিয়ে আপনার উদাহরণে একই জিনিস করা হচ্ছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.