У меня есть несколько вопросов, на которые я хотел бы получить ответ, так как я пока не эксперт Bash ... Есть несколько условий, которые мне нужно проверить перед выполнением конкретной задачи, но некоторые из них связаны и не могут быть отсоединены : Я бы хотел проверить следующее утверждение:
if ((1 OR 2) AND (3 OR 4))
then
blabla...
fi
Я сделал это до сих пор,
if [[ "[ `echo "$5" | cut -c 1-2` -lt 0 || `echo "$5" | cut -c 1-2` -gt 23 ]" && "[ `echo "$5" | cut -c 4-5` -lt 0 || `echo "$5" | cut -c 4-5` -gt 23 ]" ]]
then
echo "La plage horaire indiquée n'est pas valide ! Format = HH-HH"
exit 3
fi
и все работает правильно. У меня такое ощущение, что есть что-то гораздо более легкое, что можно сделать, чтобы выполнить эту проверку, но я не понимаю, как ...
И, во-вторых, в коде, который я написал выше, вы можете увидеть это:
"[ `echo "$5" | cut -c 1-2` -lt 0 || `echo "$5" | cut -c 1-2` -gt 23 ]"
Простая квадратная скобка соответствует тестовой функции, верно? Так почему же он правильно вызывается при двойных кавычках? Я понимаю, что не мог поместить туда какую-либо обратную кавычку, это не имело бы никакого смысла для моего эха "$ 5" ..., но двойные кавычки должны заменить специальные символы, такие как $, и предотвратить игнорирование одиночных пробелов, так почему это заменяет [символ? Считается ли он одним из этих специальных символов?
Заранее благодарю за ответы!