әрқашан жалғандықты бөлу арқылы қабық сценариймен салыстыру

Shell bash сценарийінде қарапайым салыстыруды жазамын, бірақ мен оны ешқашан түзете алмаймын:

count = 0

if [ expr $count/4 = 0 ];
then
  echo "yes";
else
  echo "no";
fi

әрқашан жоқ па?

1
Мен мұнда бір нәрсе жазып жатырмын: stackoverflow.com/questions/ 7918098/hellip;
қосылды автор olidev, көзі
Тек қана қызығушылығыңыздан бұл жерде не істеуге тырысасыз? $ Count/4 == 0-ті тек $ count 4-ден аз екенін айтады. Егер if [$ count -lt4] пайдаланбаңыз?
қосылды автор Chriszuma, көзі

3 жауаптар

Экспресс бағдарламасына қоңырау шалуды қаласаңыз, оған шынымен қоңырау шалу керек:

if [ $(expr $count/4) = 0 ]; then echo "yes"; else echo "no"; fi

Дегенмен, bash өз үйінде жасай алады:

if (( $count/4 == 0 )); then echo "yes"; else echo "no"; fi
5
қосылды
Шын мәнінде, (()) арқылы $ қажет емес. Бұл: if ((count/4 == 0)); одан кейін «иә» деп қайталаңыз; else «echo» жоқ; fi
қосылды автор Lee Netherton, көзі
Wow, мен бұның бұл жасай алатындығын білмедім. EDIT: Біраз уақыт алды, бірақ мен басшылық таптым. Мені жаңа ойынға үйреткеніңіз үшін рахмет. tldp.org/LDP/abs/html/dblparens.html
қосылды автор Chriszuma, көзі

команда ауыстыру ( $() eval өрнегін бағалау үшін немесе backticks). Сондай-ақ бүтін салыстыру үшін -eq :

if [ $(expr $count/4) -eq 0 ];
then
  echo "yes";
else
  echo "no";
fi
3
қосылды
Иә, == жолды салыстыру әдетте жұмыс істейді, бірақ егер if операторы егер <$ (expr $ count/4) == 00] деп жазылса, күтпеген нәтиже беріңіз. Осы мақсаттарға арналған салыстыру операторын пайдалану үшін ең жақсы.
қосылды автор Lee Netherton, көзі
+1, бірақ сіз = ретінде қалдыруыңыз мүмкін.
қосылды автор Michael Krelin - hacker, көзі
Бүтін сандар үшін -eq немесе == қолдануға болады, себебі жолдың эквиваленттік мәні және бүтін баламалылығы бірдей.
қосылды автор Chriszuma, көзі

Бұл қалай?

[[ count/4 -eq 0 ]] && echo 'yes' || echo 'no'
0
қосылды