Tôi có một if
tập lệnh bash của mình phải kiểm tra xem EITHER của 2 tệp có tồn tại hay không, nếu chúng không tồn tại thì nó sẽ khớp với tiếng vang.
Mã tôi có:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Nhưng điều này dường như không hoạt động vì một số lý do.
Tôi chắc chắn 110% rằng 2 tập tin này không tồn tại. Tôi không nhận được bất kỳ lỗi nào, nó chỉ không nhập if
.
Tôi chưa quen với bash scripting nên tôi không chắc điều gì có thể sai.
[[ -f xxx ]]
trả về true nếu xxx tồn tại và là tệp thông thường (hoặc liên kết tượng trưng đến tệp thông thường). Nó sẽ trả về false nếu nó không tồn tại hoặc nếu nó không thể biết nó tồn tại hay không hoặc nó tồn tại nhưng không phải là một tệp thông thường (thư mục, đường ống, thiết bị, ổ cắm ...) hoặc nếu đó là một liên kết tượng trưng đối với một tệp không tồn tại hoặc nó không thể biết nó tồn tại hay không hoặc không phải là một tệp thông thường ... [[ -e $file ]] || [[ -L $file ]]
gần với thử nghiệm tồn tại hơn. ls -d -- "$file" > /dev/null 2>&1
thậm chí còn gần hơn Và như một quy luật, loại thử nghiệm này dẫn đến điều kiện chủng tộc. Có lẽ có một cách khác.
[[ ! -f /etc/.../... ]]; echo $?
cho mỗi.