Если вам не нужно отображать вывод ошибки команды, вы можете сделать что-то вроде
if ! echo | mysql $dbcreds mysql; then
error "Could not connect to MySQL. Did you forget to add '--db-user=' or '--db-password='?"
die "Check your credentials or ensure server is running with /etc/init.d/mysqld status"
fi
В этом примере error и die - это определенные функции. в другом месте в сценарии. $ dbcreds также определен, хотя он построен из параметров командной строки. Если команда не сгенерировала ошибку, ничего не возвращается. Если произойдет ошибка, текст будет возвращен этой конкретной командой.
Поправь меня, если я ошибаюсь, но у меня складывается впечатление, что ты действительно хочешь сделать что-то более замысловатое, чем
[ `id -u` -eq '0' ] || die "Must be run as root!"
где вы фактически получаете идентификатор пользователя перед оператором if, а затем выполняете тест. Делая это таким образом, вы можете отобразить результат, если вы выберете. Это было бы
UID=`id -u`
if [ $UID -eq '0' ]; then
echo "User is root"
else
echo "User is not root"
exit 1 ##set an exit code higher than 0 if you're exiting because of an error
fi