Kiểm tra xem tệp hoặc thư mục có tồn tại từ tập lệnh Bash không
Bash được sử dụng để tự động hóa các lệnh được thực thi thường xuyên trong Linux. Các lệnh dành cho các hoạt động trên tệp / thư mục được sử dụng khá thường xuyên và thông thường, trước khi thực hiện lệnh như vậy, chúng ta cần kiểm tra xem tệp hoặc thư mục cụ thể có tồn tại hay không. Hãy để chúng tôi xem làm thế nào để thực hiện kiểm tra này.
Cú pháp và cách sử dụng
Các tập tin
Để kiểm tra xem tệp có tồn tại hay không , hãy sử dụng cú pháp sau:
[ -f ]
Biểu thức [ -f ]
trả về 0, tức là, thành công nếu tồn tại và nếu không tồn tại, nó trả về trạng thái khác 0. Thông thường, điều này được sử dụng như một điều kiện trong if
câu lệnh.
if [ -f ]
then
fi
Để phủ định giá trị trả về , chỉ cần đặt trước giá trị-f
bằng một toán tử phủ định ( !
).
if [ ! -f ]
then
fi
Trong trường hợp này, điều kiện sẽ thỏa mãn nếu tệp không tồn tại , vì trạng thái khác 0 (sai) được trả về sẽ bị phủ định và được coi là 0 (đúng).
Lưu ý rằng nếu tệp cần kiểm tra không tồn tại trong thư mục hiện tại và tồn tại trong một số thư mục khác, thì đường dẫn đầy đủ của tệp phải được đề cập thay vì chỉ tên tệp.
Thư mục
Cú pháp tương tự như được sử dụng để kiểm tra tệp được sử dụng để kiểm tra thư mục.
[ -d ]
Tương tự như câu lệnh cho các tệp, câu lệnh này trả về 0, tức là thành công, nếu thư mục tồn tại và một giá trị khác 0, tức là trạng thái thất bại được trả về nếu nó không tồn tại. Điều này cũng thường được sử dụng trong một if
điều kiện câu lệnh.
if [ -d ]
then
fi
Để phủ định trạng thái được trả về, hãy đặt trước dấu -d
bằng một toán tử phủ định ( !
).
if [ ! -d ]
then
fi
Điều kiện sẽ thỏa mãn (trạng thái 0) trong trường hợp này nếu thư mục không tồn tại và sẽ không thành công (trạng thái khác 0) nếu thư mục tồn tại.
Như đã đề cập trước đây đối với tệp, nếu thư mục được kiểm tra tồn tại ở một vị trí khác chứ không phải thư mục hiện tại, thì toàn bộ đường dẫn thư mục cần được nhập thay vì chỉ tên thư mục.
💡 Cú pháp ngoặc ( [...]
) được sử dụng ở đây thực sự là một lệnh Linux được gọi test
. Các tùy chọn -f
và -d
là các tính năng của lệnh này. Để biết thêm thông tin, hãy xem trang hướng dẫn sử dụng của test ( man test
).
Kiểm tra từ Bash Script
Trong các ví dụ trên, chúng tôi đã sử dụng các cú pháp trực tiếp trên thiết bị đầu cuối. Trình bao bất cứ khi nào nó gặp một vòng lặp hoặc một câu lệnh điều kiện ( if
trong trường hợp của chúng tôi), nó sẽ tiếp tục lời nhắc và cho phép người dùng nhập khối tiếp tục.
Các cú pháp tương tự có thể được sử dụng từ bên trong tập lệnh Bash.
Ở #!/bin/bash
đầu chỉ định trình thông dịch sẽ được sử dụng khi tệp được thực thi. Mặc dù Bash là trình bao được sử dụng phổ biến nhất hiện nay, một số người dùng thích các trình bao như thế zsh
, nên được chỉ định thay cho bash ở đầu tệp này.
Để cấp quyền thực thi cho tệp này, hãy chạy:
chmod +x test.sh
Cuối cùng, để thực thi tệp , hãy chạy:
./test.sh