Иногда при создании условий мне нужен код, который ничего не делает, например, здесь я хочу, чтобы Bash ничего не делал, если значение $a
больше 10, выведите «1», если $a
меньше 5, в противном случае выведите «2»:
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Это делает ошибку, хотя. Есть ли команда, которая ничего не будет делать, а также не замедлит мой сценарий?
bash
conditional
noop
Деревня
источник
источник
true
. Он встроен в оболочку и ничего не делает.:
он написан кем-то из моей команды, я бы попросил его изменить его.true
в безусловном контексте, я бы попросил его изменить его.if true
хорошо,then true
кажется, неправильно.if ! condition; then do something; fi
вместоif condition; then :; else do something; fi
.Вы можете, вероятно, просто использовать
true
команду:Альтернативой в вашем примере (но не везде) является переупорядочение if / else:
источник
true
иfalse
фактически не выполняете никаких действий в отношении сценария, но в принципе они могут использовать некоторые оболочки, которые принимают этот синтаксис, так что, возможно,:
это лучше.true
иfalse
встроенные модули. Для более старых оболочек,true
,false
и даже:
может быть внешние команды (хотя вы, вероятно , увидеть последний только в очень старых оболочек).:
просто, потому что это более ясно, что цельХотя я не отвечаю на первоначальный вопрос о команде no-op, многие (если не большинство) проблем, когда можно подумать, что « в этой ветке я ничего не должен делать », можно обойти, просто перестроив логику так, чтобы эта ветка победила не происходит
Я пытаюсь дать общее правило, используя пример ОП
мы должны избегать ветвления, где
$a
получается больше 10, так что$a < 10
в качестве общего условия можно применять любое другое, следующее условие.В общих чертах, когда вы говорите , ничего не делать , когда X , то перефразировать как избежать ветви , где X . Обычно вы можете избежать этого, просто отрицая X и применяя его ко всем остальным условиям.
Таким образом, пример OP с примененным правилом может быть изменен следующим образом:
Просто вариация из вышеперечисленного, заключающая в себе все в
$a < 10
состоянии:(Для этого конкретного примера реструктуризация @Flimzys, безусловно, лучше, но я хотел бы дать общее правило для всех людей, ищущих, как ничего не делать.)
источник
echo "put stuff here"
его поместите, он прервет некоторые виды использования без входа в систему (например, scp прекратит работу), и только пробелы / комментарии вызовут ошибку времени выполнения.