Я пытаюсь прочитать значение конфигурации git в сценарии bash и условно действовать в зависимости от того, true
или false
.
. Я ожидаю, что быть в состоянии сделать:
if [ $(git config --get myvalue) ]; then
echo "True"
else
echo "False"
fi
Однако, когда я запускаю приведенный выше пример, True
всегда печатается всегда . Кажется, что прямое сравнение значения с true
работает правильно, например:
if [ $(git config --get myvalue) = true ]; then
echo "True"
else
echo "False"
fi
Однако большинство языков программирования не требуют прямого сравнения с логическим значением, так что это идет вразрез с тем, что ожидайте.
На самом деле это выглядит так:
if $(git config --get myvalue); then
echo "True"
else
echo "False"
fi
Насколько я понимаю, помещение выражения в [ ]
вызывает команду test
под капотом. Однако для меня не очевидно, почему логическое выражение не оценивается должным образом с помощью test
.
Почему [ ]
не оценивает выражение правильно?