<Trước | Nội dung | Tiếp theo>
Thiếu dấu ngoặc kép
Nếu chúng tôi chỉnh sửa tập lệnh của mình và xóa dấu ngoặc kép khỏi đối số sau câu lệnh đầu tiên
lệnh tiếng vang:
#! / bin / bash
# rắc rối: tập lệnh để chứng minh các lỗi phổ biến number = 1
nếu [$ number = 1]; sau đó
echo "Số bằng 1.
khác
echo "Số không bằng 1."
fi
#! / bin / bash
# rắc rối: tập lệnh để chứng minh các lỗi phổ biến number = 1
nếu [$ number = 1]; sau đó
echo "Số bằng 1.
khác
echo "Số không bằng 1."
fi
Xem điều gì xảy ra:
[tôi @ linuxbox ~] $ rắc rối
/home/me/bin/trouble: dòng 10: EOF bất ngờ khi tìm kiếm `"' phù hợp
/home/me/bin/trouble: dòng 13: lỗi cú pháp: kết thúc tệp không mong muốn
[tôi @ linuxbox ~] $ rắc rối
/home/me/bin/trouble: dòng 10: EOF bất ngờ khi tìm kiếm `"' phù hợp
/home/me/bin/trouble: dòng 13: lỗi cú pháp: kết thúc tệp không mong muốn
Nó tạo ra hai lỗi. Điều thú vị là, số dòng được thông báo lỗi báo cáo không phải ở vị trí trích dẫn bị thiếu mà nằm ở phần sau của chương trình. Nếu chúng ta theo dõi chương trình sau phần trích dẫn còn thiếu, chúng ta có thể hiểu tại sao. bash sẽ tiếp tục tìm kiếm câu trích dẫn kết thúc cho đến khi tìm thấy một câu trích dẫn, ngay sau câu trích dẫn thứ hai bỏ lỡ yêu cầu. Sau đó, bash trở nên rất bối rối. Cú pháp của phần tiếp theo if lệnh bị hỏng vì fi câu lệnh bây giờ nằm trong một chuỗi được trích dẫn (nhưng mở).
Trong các tập lệnh dài, loại lỗi này có thể khá khó tìm. Việc sử dụng một trình soạn thảo có tô sáng cú pháp sẽ hữu ích vì trong hầu hết các trường hợp, nó sẽ hiển thị các chuỗi được trích dẫn theo cách khác biệt với các loại cú pháp shell khác. Nếu một phiên bản hoàn chỉnh của khí lực đã được cài đặt, có thể bật tính năng tô sáng cú pháp bằng cách nhập lệnh:
: cú pháp trên
: cú pháp trên
<Trước | Nội dung | Tiếp theo>