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ì -echo 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
ifvà [. Kịch bản này sẽ không làm việc với -e , bởi vì nếu grepkhông tìm thấy bất cứ điều gì sau đó dưới -ekị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 -ecó tác dụng tương tự như #/bin/bashtrên dòng số 1 và set -edòng số 2?
-etrong 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ủaegrepquá trình sinh ra ở trên).