অন্য যে কোনও সাধারণ কমান্ডের মতো, [ ... ]
বা test
এর আর্গুমেন্টগুলির মধ্যে ফাঁকা স্থান প্রয়োজন।
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
fi
অথবা
if test "$#" -ne 1; then
echo "Illegal number of parameters"
fi
পরামর্শ
বাশ-এ থাকাকালীন [[ ]]
পরিবর্তিত ব্যবহারটি পছন্দ করুন কারণ এটি শব্দটির বিভাজন এবং পথের নামটি তার ভেরিয়েবলগুলিতে প্রসারিত করে না যে কোনও অভিব্যক্তির অংশ না থাকলে উদ্ধৃতি আবশ্যক হতে পারে না।
[[ $# -ne 1 ]]
এটিতে আরও কিছু বৈশিষ্ট্য রয়েছে যেমন আনকোটেড কন্ডিশন গ্রুপিং, প্যাটার্ন ম্যাচিং (এর সাথে বর্ধিত প্যাটার্ন মেলানো extglob
) এবং রেজেক্স ম্যাচিং।
নিম্নলিখিত উদাহরণটি আর্গুমেন্ট বৈধ কিনা তা পরীক্ষা করে। এটি একটি একক তর্ক বা দুটি অনুমতি দেয়।
[[ ($# -eq 1 || ($# -eq 2 && $2 == <glob pattern>)) && $1 =~ <regex pattern> ]]
বিশুদ্ধ গাণিতিক এক্সপ্রেশন জন্য ব্যবহার (( ))
কিছু এখনও ভালো হতে পারে, কিন্তু তারা এখনও সম্ভব [[ ]]
চাই তার গাণিতিক অপারেটর সঙ্গে -eq
, -ne
, -lt
, -le
, -gt
, অথবা -ge
একটি একক পংক্তি আর্গুমেন্ট হিসাবে অভিব্যক্তি স্থাপন দ্বারা:
A=1
[[ 'A + 1' -eq 2 ]] && echo true ## Prints true.
আপনার যদি এটির অন্যান্য বৈশিষ্ট্যগুলির সাথে একত্রিত করার প্রয়োজন হয় তবে এটি সহায়ক হবে [[ ]]
।
স্ক্রিপ্ট থেকে প্রস্থান করা হচ্ছে
এটিতে অবৈধ পরামিতিগুলি পাস করার পরে স্ক্রিপ্টটি প্রস্থান করাও যৌক্তিক। ইতিমধ্যে এ প্রস্তাব করা হয়েছে মন্তব্য দ্বারা ekangas কিন্তু কেউ এই উত্তর সম্পাদিত সঙ্গে এটি আছে -1
, যেমন ফিরে মান তাই আমি ভাল হিসাবে এটা সঠিক করতে পারে।
-1
যদিও বাশ দ্বারা আর্গুমেন্ট হিসাবে স্বীকৃত exit
তা স্পষ্টভাবে নথিভুক্ত নয় এবং সাধারণ পরামর্শ হিসাবে ব্যবহার করা ঠিক নয়। 64
এটি সর্বাধিক প্রথাগত মান হিসাবে এটি সংজ্ঞায়িত করা sysexits.h
হয় #define EX_USAGE 64 /* command line usage error */
। বেশিরভাগ সরঞ্জামগুলিও অবৈধ যুক্তিগুলিতে ls
ফিরে আসে 2
। আমি 2
আমার স্ক্রিপ্টগুলিতে ফিরে আসতাম তবে ইদানীং আমি আর সত্যিকারের যত্ন নিই না এবং কেবল 1
সমস্ত ত্রুটিতে ব্যবহার করি । তবে আসুন 2
এখানে কেবল রাখুন কারণ এটি সবচেয়ে সাধারণ এবং সম্ভবত ওএস-নির্দিষ্ট নয়।
if [[ $# -ne 1 ]]; then
echo "Illegal number of parameters"
exit 2
fi
তথ্যসূত্র
test
। এটি একটি স্ট্যান্ডার্ড ইউনিক্স কমান্ডের নাম, আপনি এটি ছায়া দিতে চান না।