2010-05-30 60 views
5

Tôi đang cố gắng tạo tập lệnh để phát hiện xem thư mục có tồn tại hay không, và nếu không, để tạo nó.Tập lệnh Shell để kiểm tra xem một thư mục có tồn tại không và nếu không tạo nó?

Tôi có thể làm như thế nào?

tôi đã làm một số đào và tìm thấy một đầu mối:

test -d directory 

... sẽ trở lại true hoặc false tuỳ thuộc vào việc các thư mục tồn tại hay không.

Nhưng làm cách nào để kết hợp điều này với nhau bằng mkdir?

+0

Tại sao phải thử nghiệm? Chỉ cần làm "mkdir foo 2>/dev/null". Nếu thư mục tồn tại, mkdir sẽ thất bại và không làm hại. –

Trả lời

9

mkdir -p $directory nên làm những gì bạn muốn. Tùy chọn -p sẽ tạo bất kỳ thư mục cha mẹ cần thiết nào. Nếu $directory đã tồn tại dưới dạng một thư mục, lệnh sẽ không làm gì cả và thành công. Nếu $directory là một tệp thông thường, tệp đó sẽ không bị ảnh hưởng và lệnh sẽ không thành công với thông báo lỗi thích hợp.

Nếu không có tùy chọn -p để mkdir, chiến lược test ... || mkdir ... có thể thất bại nếu $directory chứa '/' và một số thành phần của đường dẫn đó chưa tồn tại. Tuy nhiên, test là thừa, vì mkdir thực hiện cùng một thử nghiệm nội bộ.

3
test ... || mkdir ... 
+0

Ah ... Chỉ cần hoàn hảo! –

Các vấn đề liên quan