উত্তর:
কমান্ডটিতে কোনও আর্গুমেন্ট সরবরাহ করা হয়নি কিনা তা পরীক্ষা করতে $#
ভেরিয়েবলের মান পরীক্ষা করে দেখুন ,
if [ $# -eq 0 ]; then
echo "No arguments provided"
exit 1
fi
আপনি যদি ব্যবহার করতে চান $*
( পছন্দসই না ) তবে,
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
কিছু ব্যাখ্যা:
দ্বিতীয় পন্থাটি পছন্দনীয় নয় কারণ অবস্থানগত পরামিতিগুলিতে *
এক থেকে শুরু করে অবস্থানীয় পরামিতিগুলিতে প্রসারিত হয়। ডাবল উদ্ধৃতিগুলির মধ্যে যখন প্রসারণ ঘটে তখন এটি আইএফএস বিশেষ ভেরিয়েবলের প্রথম অক্ষর দ্বারা পৃথক পৃথক প্রতিটি প্যারামিটারের মান সহ একটি শব্দে প্রসারিত হয়। তার মানে একটি স্ট্রিং তৈরি করা হয়েছে। সুতরাং অতিরিক্ত ওভারহেড আছে।
অন্যদিকে #
অবস্থানগত পরামিতিগুলির সংখ্যাতে প্রসারিত।
উদাহরণ:
$ command param1 param2
এখানে,
মান $#
2 হয় এবং $*
আইএফএস আনসেট না থাকলে মানটি "প্যারাম 1 প্যারাম 2" (উদ্ধৃতি ব্যতীত) হয় is কারণ যদি আইএফএসটি সেট না করা থাকে তবে পরামিতিগুলি স্পেস দ্বারা পৃথক করা হয়
বিশেষ বিবরণ man bash
এবং বিশেষ পরামিতি নামের বিষয় পড়ার জন্য
[ $# -eq 0 ]
আইএমই সবচেয়ে সাধারণ ফর্ম। "$#"
খালি থাকতে পারে এমন প্রান্তের কেস রয়েছে : যদি একক যুক্তি থাকে যা খালি থাকে, বা যদি বেশ কয়েকটি খালি যুক্তি থাকে এবং $IFS
খালি থাকে।
"$*"
অভিব্যক্তি এছাড়াও মূল্যায়ন করবে ""
যদি শুধুমাত্র একটি ""
প্যারামিটার পাস হয়। তবে বেশিরভাগ সময় আপনি সম্ভবত কোনওভাবেই চিন্তা করবেন না।
bash
। আপনি sh
স্ক্রিপ্টটি কার্যকর করতে ব্যবহার করছেন । এএফআইকে ==
কেবলমাত্র বৈধ bash
।
যদি আপনি কেবলমাত্র কোনও যুক্তি অনুপস্থিত থাকে তবে জামিনে আগ্রহী, প্যারামিটার সাবস্টিটিউশন দুর্দান্ত:
#!/bin/bash
# usage-message.sh
: ${1?"Usage: $0 ARGUMENT"}
# Script exits here if command-line parameter absent,
#+ with following error message.
# usage-message.sh: 1: Usage: usage-message.sh ARGUMENT
আপনি যে কোনও যুক্তি পেয়েছেন তা আপনি জানতে পারবেন এটির একটি উপায়
NO_ARGS=0
if [ $# -eq "$NO_ARGS" ]; then
{do something}
fi
if ! (($#)); ...
, বাif (($# == 0)); ...
, বাif [ $# -eq 0 ]; ...
, বা! (($#)) && ...
, বা(($#)) || ...