معنى - ما هو bash




استخدام إذا أليف فاي في البرامج النصية قذيفة (4)

هذا السؤال لديه بالفعل إجابة هنا:

لست متأكدًا من كيفية القيام بذلك في if وجود اختبارات متعددة في حالة الصدفة. أواجه مشكلة في كتابة هذا البرنامج النصي:

echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" && "$arg1" != "$arg3" ]
then
    echo "Two of the provided args are equal."
    exit 3
elif [ $arg1 = $arg2 && $arg1 = $arg3 ]
then
    echo "All of the specified args are equal"
    exit 0
else
    echo "All of the specified args are different"
    exit 4
fi

المشكلة هي أنني أتلقى هذا الخطأ في كل مرة:

./compare.sh: [: مفقود ']' الأمر غير موجود


استخدم الأقواس المزدوجة ...

if [[ expression ]]


تعمل إجابة Josh Lee ، ولكن يمكنك استخدام عامل التشغيل "&&" للحصول على قراءة أفضل مثل هذا:

echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
then 
    echo "Two of the provided args are equal."
    exit 3
elif [ $arg1 = $arg2 ] && [ $arg1 = $arg3 ]
then
    echo "All of the specified args are equal"
    exit 0
else
    echo "All of the specified args are different"
    exit 4 
fi

لدي عينة من التعليمات البرمجية الخاصة بك. جرب هذا:

echo "*Select Option:*"
echo "1 - script1"
echo "2 - script2"
echo "3 - script3 "
read option
echo "You have selected" $option"."
if [ $option="1" ]
then
    echo "1"
elif [ $option="2" ]
then
    echo "2"
    exit 0
elif [ $option="3" ]
then
    echo "3"
    exit 0
else
    echo "Please try again from given options only."
fi

هذا يجب أن تعمل. :)


هذا العمل بالنسبة لي،

 # cat checking.sh
 #!/bin/bash
 echo "You have provided the following arguments $arg1 $arg2 $arg3"
 if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
 then
     echo "Two of the provided args are equal."
     exit 3
 elif [ $arg1 == $arg2 ] && [ $arg1 = $arg3 ]
 then
     echo "All of the specified args are equal"
     exit 0
 else
     echo "All of the specified args are different"
     exit 4
 fi

 # ./checking.sh
 You have provided the following arguments
 All of the specified args are equal

يمكنك إضافة "set -x" في البرنامج النصي لاستكشاف الأخطاء وإصلاحها ،

شكر.





shell