bash - شل سكريبت: إف بيان




shell if-statement (2)

أنا أتابع البرنامج التعليمي هنا: http://bash.cyberciti.biz/guide/If..else..fi#Number_Testing_Script

يبدو النص البرمجي كما يلي:

lines=`wc -l $var/customize/script.php`
if test $lines -le 10
then
    echo "script has less than 10 lines"
else
    echo "script has more than 10 lines"
fi

ولكن بلدي الانتاج يبدو مثل:

./boot.sh: line 33: test: too many arguments
script has more than 10 lines

لماذا تقول إن لدي الكثير من الحجج؟ أنا لا أرى كيف بلدي نصي يختلف عن واحد في البرنامج التعليمي.


أيضا، يجب عليك استخدام

if [[ $lines -gt 10 ]]; then
    something
else
  something
fi

test condition هو عفا عليها الزمن حقا، وهكذا هو خليفة مباشرة، [ condition ] ، وذلك أساسا لأن عليك أن تكون حذرا حقا مع تلك الأشكال. على سبيل المثال، يجب أن أقتبس أي $var كنت تمر test أو [ ] ، وهناك تفاصيل أخرى التي تحصل على شعر. (يتم التعامل مع الاختبارات في كل شيء كما أي أمر آخر). اطلع على هذه المقالة للحصول على بعض التفاصيل.


wc -l file الأمر طباعة كلمتين. جرب هذا:

lines=`wc -l file | awk '{print $1}'`

لتصحيح أخطاء برنامج نصي باش (boot.sh)، يمكنك:

$ bash -x ./boot.sh

فإنه سيتم طباعة كل سطر تنفيذها.





if-statement