উত্তর:
if [[ $# -eq 0 ]] ; then
echo 'some message'
exit 0
fi
case "$1" in
1) echo 'you gave 1' ;;
*) echo 'you gave something else' ;;
esac
উন্নত ব্যাশ-স্ক্রিপ্টিং গাইড বেশ ভাল। এর নাম সত্ত্বেও, এটি বেসিকগুলি ব্যবহার করে।
> /dev/nullএবং / বা 2> /dev/nullতার পরে করতে পারেন।
exit 1) এর চেয়ে আলাদা কিছু ফিরিয়ে দিন । রিটার্ন / প্রস্থান কোডগুলি সম্পর্কে আরও কনভেনশন রয়েছে, যা আপনি অনলাইনে দ্রুত খুঁজে পেতে পারেন, তবে গুরুত্বপূর্ণ বিষয়টি এটি 0 হওয়া উচিত নয়, যা সাফল্যের ইঙ্গিত দেয়।
যদি কেবলমাত্র কোনও যুক্তি অনুপস্থিত থাকে তবে জামিনে আগ্রহী, প্যারামিটার সাবস্টিটিউশনটি দুর্দান্ত:
#!/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
if [ -z "$*" ]; then echo "No args"; fi
No args
-z হ'ল স্ট্রিংয়ের দৈর্ঘ্যের শূন্যতার জন্য অ্যানারি অপারেটর।
$*সমস্ত যুক্তি হয়। উদ্ধৃতিগুলি সুরক্ষার জন্য এবং যদি উপস্থিত থাকে তবে একাধিক আর্গুমেন্টকে encapsulating।
এই জাতীয় আরও অপারেটরগুলির জন্য "unary" এর জন্য man bash( / কী) ব্যবহার করুন এবং অনুসন্ধান করুন ।
-zযেমন mizzing
পুরানো তবে আমার কাছে উত্তরটি পুনরায় কাজ করার কারণ আছে আগের কিছু বিভ্রান্তির জন্য ধন্যবাদ:
if [[ $1 == "" ]] #Where "$1" is the positional argument you want to validate
then
echo "something"
exit 0
fi
কোনও অবস্থানগত আর্গুমেন্ট is 1 না থাকলে এটি "কিছু" প্রতিধ্বনিত হবে। এটি বৈধতা দেয় না যে $ 1 এ নির্দিষ্ট তথ্য রয়েছে।
$#যুক্তি সংখ্যার সুস্পষ্টভাবে পূর্ণসংখ্যা গণনা; এটি হয় "0" হবে এবং কোনও যুক্তি না থাকলেও আপনি "কিছু" প্রতিধ্বনিত হবেন, বা এটি কিছু ধনাত্মক সংখ্যা হবে এবং আপনি "কিছু" সঠিকভাবে প্রতিধ্বনিত হবেন। তবে চেক নিজেই কখনই কিছু করবে না, আপনি যে ইনপুট এবং ইনপুট ব্যবহার করেন তা নির্বিশেষে - এটি সর্বদা প্রতিবেদন করবে $#যার একটি মান রয়েছে। সুতরাং এটি সম্পূর্ণরূপে ভুল এবং দাবি হিসাবে কখনও কাজ করবে না।
echo $#স্ক্রিপ্ট /tmp/test.sh এর বিষয়বস্তু হিসাবে চেষ্টা করুন , তারপরে এটি / বিন / বাশের পাশাপাশি / বিন / শের (বা / বিন / ড্যাশ এবং আপনার কাছে যে কোনও শেল প্রয়োগ রয়েছে) চালান। /tmp/test.sh"0" তে প্রতিধ্বনিত হবে কনসোলটি যেমন হবে /bin/dash /tmp/test.sh, অন্যদিকে, /tmp/test.sh foo"1" /tmp/test.sh first secondপ্রতিধ্বনিত হবে এবং "2" প্রতিধ্বনিত হবে