Ответ @raj на 100% правильный для упрощения кода.
Это всего лишь несколько альтернативных способов использования кодов выхода, которые, возможно, проливают немного больше света на то, как их можно использовать.
Код выхода можно проверить, выполнив эхо $?
сразу после вашей команды id -u $user &>/dev/null
который не нужно заключать в $(..)
или что-то в этом роде.
Просто попробуй id -u <имя пользователя> &>/dev/null
а затем введите эхо $?
чтобы проверить код выхода.
Пример:
terrance@terrance-ubuntu:~$ id -u terrance &>/dev/null
terrance@terrance-ubuntu:~$ эхо $?
0
terrance@terrance-ubuntu:~$ id -u mark &>/dev/null
terrance@terrance-ubuntu:~$ эхо $?
1
В приведенном выше примере пользователь отметка
не существует на моем компьютере, поэтому статус выхода 1.
Используя код выхода, вы можете поместить его в кейс
заявление вместо если еще
утверждение.
#!/бин/баш
эхо "Введите имя пользователя"
читать -r пользователь
id -u "$user" &>/dev/null
случай $? в
0) echo "Пользователь существует";;
1) adduser $пользователь
эхо "добавить пароль"
пароль $пользователь
эхо $пользователь >> text.txt
эхо "сохранено";;
эсак
Интересно, что с помощью если [ ]; тогда
все еще можно использовать, добавив эхо $?
в вашу проверку if, но я заметил, что вы проверяли, существует ли 1, но 1 означает, что код вышел с 1, означающим, что он не найден.
Добавление будет работать так же.
#!/бин/баш
эхо "Введите имя пользователя"
читать -r пользователь
если [ $(id -u "$user" &>/dev/null; echo $?) == 0 ]; тогда
эхо "Пользователь существует"
еще
добавочный пользователь $ пользователь
эхо "добавить пароль"
пароль $пользователь
эхо $пользователь >> text.txt
эхо "сохранено"
фи