Câu trả lời của @raj là đúng 100% để đơn giản hóa mã.
Đây chỉ là một số cách thay thế để sử dụng mã thoát và có thể làm sáng tỏ thêm một chút về cách sử dụng chúng.
Mã thoát có thể được kiểm tra bằng cách thực hiện một tiếng vang $?
ngay sau lệnh của bạn id -u $user &>/dev/null
mà không cần phải được bọc trong $(..)
hoặc bất cứ điều gì như thế.
Thử xem id -u <tên người dùng> &>/dev/null
và sau đó gõ vào tiếng vang $?
để kiểm tra mã thoát.
Ví dụ:
terrance@terrance-ubuntu:~$ id -u terrance &>/dev/null
terrance@terance-ubuntu:~$ echo $?
0
terrance@terrance-ubuntu:~$ id -u mark &>/dev/null
terrance@terance-ubuntu:~$ echo $?
1
Trong ví dụ trên, người dùng dấu
không tồn tại trên máy tính của tôi, do đó, trạng thái thoát của 1.
Sử dụng mã thoát, bạn có thể đặt nó vào một trường hợp
tuyên bố thay vì một nếu khác
bản tường trình.
#!/bin/bash
tiếng vang "Nhập tên người dùng"
người dùng đọc -r
id -u "$user" &>/dev/null
trường hợp $? Trong
0) echo "Người dùng tồn tại";;
1) người dùng bổ sung $user
tiếng vang "thêm mật khẩu"
mật khẩu người dùng $
tiếng vang $user >> text.txt
tiếng vang "đã lưu";;
thoát hiểm
Thật thú vị, sử dụng một nếu [ ]; sau đó
vẫn có thể được sử dụng bằng cách thêm một tiếng vang $?
vào kiểm tra if của bạn, nhưng tôi nhận thấy rằng bạn đang kiểm tra 1 là if tồn tại, nhưng 1 có nghĩa là mã đã thoát với 1 nghĩa là không tìm thấy.
Việc thêm nó cũng sẽ hoạt động như thế này.
#!/bin/bash
tiếng vang "Nhập tên người dùng"
người dùng đọc -r
if [ $(id -u "$user" &>/dev/null; echo $?) == 0 ]; sau đó
tiếng vang "Người dùng tồn tại"
khác
người dùng bổ sung $user
tiếng vang "thêm mật khẩu"
mật khẩu người dùng $
tiếng vang $user >> text.txt
tiếng vang "đã lưu"
fi