java -version
записывает в стандартную ошибку, а не в стандартный вывод.
su - root -s /usr/bin/sh -c "java -version <b>2>&1</b> |grep build"
2>&1
копирует стандартную ошибку в стандартный вывод, так что она подается через канал и в grep
.
Тем не менее, grep
не нужно запускать как root, предполагая, что конвейер не определен для использования чем-то, что просто запускает произвольный код с использованием su sh -c '...'
.
su - root -s /usr/bin/sh -c 'java -version' 2>&1 | grep build