Какая команда означает" ничего не делать " в условном в Bash?
иногда при создании условных обозначений мне нужен код, чтобы ничего не делать, например, здесь я хочу, чтобы Bash ничего не делал, когда $a больше ,чем" 10", выведите" 1", Если $a меньше, чем "5", в противном случае выведите"2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Это делает ошибку, хотя. Есть ли команда, которая ничего не будет делать, а также не замедляет мой скрипт?
3 ответов:
команда no-op в оболочке
:(двоеточие).if [ "$a" -ge 10 ] then : elif [ "$a" -le 5 ] then echo "1" else echo "2" fiС bash manual:
:(двоеточие)
Не делайте ничего, кроме расширения аргументов и выполнения перенаправления. Статус возврата равен нулю.
вы, вероятно, можете просто использовать :
if [ "$a" -ge 10 ]; then true elif [ "$a" -le 5 ]; then echo "1" else echo "2" fiальтернативой в вашем примере (но не обязательно везде) является переупорядочение вашего if / else:
if [ "$a" -le 5 ]; then echo "1" elif [ "$a" -lt 10 ]; then echo "2" fi
хотя я не отвечаю на исходный вопрос, согласующийся с командой no-op, многие (если не большинство) проблемы, когда можно подумать "в этой ветке я ничего не делать" можно обойти, просто перестройка логики так что эта ветка не произойдет.
Я пытаюсь дать общее правило, используя пример OPs
ничего не делать, когда $a больше ,чем" 10", печать "1", Если $a меньше, чем" 5", в противном случае, печать "2"
мы должны избегать филиала, где
$aполучает более 10, так что$a < 10как общее условие можно приложить к каждому другому, после условия.в общих чертах, когда вы говорите ничего не делать, когда X, затем перефразируйте его как избегайте ветви, где X. Обычно вы можете избежать этого, просто отрицая X и применяя его ко всем другим условиям.
таким образом, пример OPs с примененным правилом может быть реструктурировано как:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ] then echo "1" elif [ "$a" -lt 10 ] then echo "2" fiпросто вариация выше, заключающая все в
$a < 10состояние:if [ "$a" -lt 10 ] then if [ "$a" -le 5 ] then echo "1" else echo "2" fi fi(для этого конкретного примера @ Flimzys реструктуризация конечно лучше, но я хотел дать общее правило для всех людей, которые ищут, как ничего не делать.)
Comments