আমি কীভাবে সঠিক আর্গুমেন্টের জন্য পরীক্ষা করব (একটি যুক্তি)। যদি কেউ সঠিক আর্গুমেন্টের সঠিক নম্বর না দিয়ে স্ক্রিপ্টটি চালিত করার চেষ্টা করে এবং কমান্ড লাইন যুক্তিটি আসলে উপস্থিত রয়েছে এবং এটি একটি ডিরেক্টরি কিনা তা পরীক্ষা করে দেখছে।
আমি কীভাবে সঠিক আর্গুমেন্টের জন্য পরীক্ষা করব (একটি যুক্তি)। যদি কেউ সঠিক আর্গুমেন্টের সঠিক নম্বর না দিয়ে স্ক্রিপ্টটি চালিত করার চেষ্টা করে এবং কমান্ড লাইন যুক্তিটি আসলে উপস্থিত রয়েছে এবং এটি একটি ডিরেক্টরি কিনা তা পরীক্ষা করে দেখছে।
উত্তর:
#!/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
if [ "$#" -ne 1 ] ; then
বা if ! [ -d "$1" ]; then
কোন ধারাটি সমস্যার সৃষ্টি করছে তা দেখুন।
-d
উদ্বিগ্ন পরিচালক নেই । যদি আপনি একটি পৃথক চেক যোগ করতে চান তবে আপনি -e
অস্তিত্বের জন্য যাচাই করতে পারেন ।
-e
ফাইল উপস্থিত থাকলে সত্য ফিরে আসে। আমি উত্তরে আরও বন্ধুত্বপূর্ণ ত্রুটি যুক্ত করেছি।
বিড়াল স্ক্রিপ্ট.শ
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
আপনি কমান্ড লাইনে পাস হওয়া মোট আর্গুমেন্টের পরীক্ষা করতে পারেন যা " $#
"
উদাহরণস্বরূপ বলুন আমার শেল স্ক্রিপ্টের নামটি দিয়ে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
shell
মানে/bin/sh