Я пытаюсь передать команды, используя библиотеку scala sys.process, но заметил, что #|
вернет код завершения финального процесса.У меня есть команды ранее в сбое канала, но код завершения последней команды равен 0, поскольку она не выдает ошибку.
Мне было интересно, есть ли у scala способ проверить / получить, если предыдущие командыв канале (# |) не удалось.
import scala.sys.process._
val p1 = ("false" #| "true").run()
assert(p1.exitValue == 1)
Bash имеет set -o pipefail
, который передаст ненулевой код выхода канала, но это только кажется немного "хакерским":
val p2 = Seq("/bin/bash", "-c", "set -o pipefail && false | true").run()
assert(p2.exitValue == 1)
Я надеялся, что может быть лучше.
Спасибо, я ценю любую помощь:)