Рассмотрим следующий сценарий оболочки:
Код: Выделить всё
#!/bin/bash
echo Hello
gradle clean
echo Bye
При запуске по файлу ожидаемый результат правильный.
Код: Выделить всё
$ chmod +x script.sh
$ ./script.sh
Hello
BUILD SUCCESSFUL in 1s
1 actionable task: 1 up-to-date
Bye
При запуске через стандартный ввод ожидаемый результат неверен.
Код: Выделить всё
$ cat script.sh | bash -s
Hello
BUILD SUCCESSFUL in 1s
1 actionable task: 1 up-to-date
В случае stdin после запуска gradle clean поток сценария прерывается, завершается с кодом возврата 0 и никогда не достигает следующих команд. Я ищу способ выполнить приведенный выше сценарий с помощью стандартного ввода, потому что я буду использовать канал с завитком, например, завиток -so-
http://host/script.sh | bash -s.
Я мог бы решить эту проблему, обернув gradle в новый канал, но я тоже не понимаю, почему это работает:
Код: Выделить всё
#!/bin/bash
echo Hello
echo gradle clean | bash -s
echo Bye
Мне хотелось бы найти аккуратное решение (например, флаг в bash/gradle). Спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... adle-tasks