আর্গুমেন্টের সঠিক সংখ্যাটি পরীক্ষা করা হচ্ছে


147

আমি কীভাবে সঠিক আর্গুমেন্টের জন্য পরীক্ষা করব (একটি যুক্তি)। যদি কেউ সঠিক আর্গুমেন্টের সঠিক নম্বর না দিয়ে স্ক্রিপ্টটি চালিত করার চেষ্টা করে এবং কমান্ড লাইন যুক্তিটি আসলে উপস্থিত রয়েছে এবং এটি একটি ডিরেক্টরি কিনা তা পরীক্ষা করে দেখছে।


5
@Daniel shellমানে/bin/sh
Ruel

উত্তর:


215
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
  echo "Usage: $0 DIRECTORY" >&2
  exit 1
fi

অনুবাদ: আর্গুমেন্টের সংখ্যা যদি (সংখ্যায়) 1 এর সমান হয় না বা প্রথম আর্গুমেন্ট কোনও ডিরেক্টরি না হয় তবে স্টডারারের আউটপুট ব্যবহার এবং ব্যর্থতার স্থিতি কোড সহ প্রস্থান করা।

আরও বন্ধুত্বপূর্ণ ত্রুটি প্রতিবেদন:

#!/bin/sh
if [ "$#" -ne 1 ]; then
  echo "Usage: $0 DIRECTORY" >&2
  exit 1
fi
if ! [ -e "$1" ]; then
  echo "$1 not found" >&2
  exit 1
fi
if ! [ -d "$1" ]; then
  echo "$1 not a directory" >&2
  exit 1
fi

1
@ অ্যান্ড্রু কে: কোন লাইনে এটি রিপোর্ট করছে? যদি এটি "যদি" লাইন হয় তবে দুটি দফার এটির দুটি তৈরি করার চেষ্টা করুন if [ "$#" -ne 1 ] ; thenবা if ! [ -d "$1" ]; thenকোন ধারাটি সমস্যার সৃষ্টি করছে তা দেখুন।
লরেন্স গনসাল্ভেস

আমি বুঝতে পেরেছি ধন্যবাদ। ফাইলের নামটি না থাকলে কীভাবে?
অ্যান্ড্রু কে

অস্তিত্ব নেই == যতটা -dউদ্বিগ্ন পরিচালক নেই । যদি আপনি একটি পৃথক চেক যোগ করতে চান তবে আপনি -eঅস্তিত্বের জন্য যাচাই করতে পারেন ।
লরেন্স গনসাল্ভেস

যদি [-e "$ 1"] তবে প্রতিধ্বনি "cho 1: এ জাতীয় কোনও ডিরেক্টরি নেই" প্রস্থান 1 ফাই
অ্যান্ড্রু কে

@ অ্যান্ড্রু কে: আপনি চেকটি উল্টাতে চান। -eফাইল উপস্থিত থাকলে সত্য ফিরে আসে। আমি উত্তরে আরও বন্ধুত্বপূর্ণ ত্রুটি যুক্ত করেছি।
লরেন্স গনসাল্ভেস

22

বিড়াল স্ক্রিপ্ট.শ

    var1=$1
    var2=$2
    if [ "$#" -eq 2 ]
    then
            if [ -d $var1 ]
            then
            echo directory ${var1} exist
            else
            echo Directory ${var1} Does not exists
            fi
            if [ -d $var2 ]
            then
            echo directory ${var2} exist
            else
            echo Directory ${var2} Does not exists
            fi
    else
    echo "Arguments are not equals to 2"
    exit 1
    fi

এটি নীচের মত কার্যকর করুন -

./script.sh directory1 directory2

আউটপুট যেমন হবে -

directory1 exit
directory2 Does not exists

14

আপনি কমান্ড লাইনে পাস হওয়া মোট আর্গুমেন্টের পরীক্ষা করতে পারেন যা " $#" উদাহরণস্বরূপ বলুন আমার শেল স্ক্রিপ্টের নামটি দিয়েhello.sh

sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument 
if [ $# -eq 1 ] 
then
    echo $1
else
    echo "invalid argument please pass only one argument "
fi

আউটপুট হবে hello-world

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