Tôi có một tập lệnh bash với các phần sau:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Kịch bản này sẽ không chạy nếu không có -e. Làm gì -e
cho kịch bản này? Ngoài ra, những gì $?
làm trong bối cảnh này?
-e
được ghi lại dưới đây set
.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
và [
. Kịch bản này sẽ không làm việc với -e
, bởi vì nếu grep
không tìm thấy bất cứ điều gì sau đó dưới -e
kịch bản sẽ chấm dứt ngay tại đó. Nếu không -e
, bạn đã nhận được thông báo ngược: trạng thái ( $?
) bằng 0 có nghĩa là grep đã tìm thấy người dùng. Lưu ý rằng đây phải là `grep '^ tên người dùng:', nhân tiện (nếu có một người dùng khác có tên dài hơn thì sao?).
#/bin/bash -e
có tác dụng tương tự như #/bin/bash
trên dòng số 1 và set -e
dòng số 2?
-e
trong trang người đàn ông (tôi thực sự muốn xem một câu trả lời địa chỉ này).$?
chứa mã thoát cuối cùng (mã củaegrep
quá trình sinh ra ở trên).