Да, PIPE создает статус выхода; если вам нужен код выхода команды перед PIPE, вы можете использовать $PIPESTATUS
В соответствии с этими вопросами и ответами по переполнению стека, чтобы распечатать статус выхода команды при использовании канала вы можете сделать:
your_command | echo $PIPESTATUS
Или установить pipefail с помощью команды set -o pipefail
(чтобы отменить его, выполните set +o pipefail
) и используйте $?
вместо $PIPESTATUS
.
your_command | echo $?
Эти команды работают только после того, как вы запустите их хотя бы один раз; это означает, что PIPESTATUS
работает только тогда, когда вы запускаете его после команды с конвейером, например:
command_which_exit_10 | command_which_exit_1
echo "${PIPESTATUS[0]} ${PIPESTATUS[1]}"
Вы получите 10 за ${PIPESTATUS[0]}
и 1 за ${PIPESTATUS[1]}
.
Дополнительную информацию см. в этом вопросе и ответе U&L.
Похоже, у вас есть доступ к /etc/shadow
в качестве привилегированного пользователя (sudo? ), сделать
sudo passwd root
Если, с другой стороны, вы редактируете файловую систему на карте MicroSD на другом компьютере, просто отредактируйте пароль root в /etc/shadow
. Удалите поле зашифрованного пароля, как в:
root::14610:0:99999:7:::
После этого вы сможете войти в консоль как пользователь root, нажать ENTER при запросе пароля и изменить его после входа в систему с помощью passwd
.