Tại sao không sử dụng mã thoát? Nếu một kho git tồn tại trong thư mục hiện hành, sau đó git branch
và git tag
lệnh trở lại mã trả về 0; nếu không, mã thoát khác không sẽ được trả về. Bằng cách này, bạn có thể xác định xem một kho git có tồn tại hay không. Đơn giản, bạn có thể chạy:
git tag > /dev/null 2>&1 && [ $? -eq 0 ]
Ưu điểm : Linh hoạt. Nó hoạt động cho cả kho lưu trữ trần và không trần, và trong sh, zsh và bash.
Giải trình
git tag
: Lấy thẻ của kho lưu trữ để xác định xem có tồn tại hay không.
> /dev/null 2>&1
: Ngăn chặn in bất cứ thứ gì, kể cả đầu ra bình thường và lỗi.
[ $? -eq 0 ]
: Kiểm tra xem lệnh trước có trả về với mã thoát 0 hay không. Như bạn có thể biết, mọi lối thoát khác không có nghĩa là có điều gì đó tồi tệ đã xảy ra. $?
được mã lối ra của lệnh trước đó, và [
, -eq
và ]
thực hiện các so sánh.
Ví dụ, bạn có thể tạo một tệp có tên check-git-repo
với các nội dung sau, làm cho nó có thể thực thi được và chạy nó:
#!/bin/sh
if git tag > /dev/null 2>&1 && [ $? -eq 0 ]; then
echo "Repository exists!";
else
echo "No repository here.";
fi