2016-12-23 3 views
1
  • развертывание сценария запускает пару rake задач.
  • иногда рейк-задачи терпят неудачу.

с bash Я хотел бы установить переменную, если задача выполнена успешно, а затем проверить эту переменную позже, чтобы продолжить/выйти из сценария.проверка рейк задача завершено?

что-то вроде:

precompile_success = false 
... 
rake assets:precompile && precompile_success = true 

... 

if [ !precompile_success ]; then 
    exit 
fi 

как бы я?

+1

Что такое, что вы хотели бы сделать? Можете ли вы сломать его? Не совсем понятно – Inian

+0

@ Иниан, я перефразировал вопрос ^^ –

+1

Вы беспокоитесь о синтаксисе или не пытались работать? просто пара синтаксических исправлений в вашей попытке должна решить эту проблему, пропустите пробел во время присвоения, присвойте ему имя 'name = value' и добавьте пробел перед проверкой отрицания' [! $ precompile_success] '? – Inian

ответ

1

Там нет никакого буквального поддержка booleantrue (или) в bashfalse, но может быть обработан, как местоблюститель для 1 и 0 использования C-stlye arithmetic-expressions with (())

Используя только свой код-фрагмент и переписывание его с помощью арифметических операций выражения.

precompile_success=0 

rake assets:precompile && precompile_success=1 
((!precompile_success)) && exit 
0

Вы можете сделать тест с A.Sh

#!/bin/bash 
precompile_success=false 
(exit $1) && precompile_success=true 

if [ "$precompile_success" = true ]; then 
    echo OK 
else 
    echo KO 
fi 

Test

$ ./a.sh 0 
OK 
$ ./a.sh 1 
KO