Краткий ответ: да - Вы можете оценить команду внутри условия if
. Единственное, что я хотел бы изменить в вашем первом примере, это цитата:
if [ "$(echo foo)" == "foo" ]
then
echo "Success"'!'
fi
- Обратите внимание на забавную цитату для
'!'
. Это отключает специальное поведение !
внутри интерактивного сеанса bash, что может привести к неожиданным результатам для вас.
После вашего обновления ваша проблема становится понятной, и изменение в кавычках фактически решает ее:
Оценка $(...)
происходит до оценки if [...]
, поэтому, если $(...)
оценивает пустую строку, [...]
становится if [ == ""]
, что является недопустимым синтаксисом.
Способ решить эту проблему - использовать кавычки вне выражения $(...)
. Именно здесь вы можете столкнуться с трудной проблемой цитирования внутри цитаты, но я перенесу эту проблему на другой вопрос.