Lưu trữ trực tuyến miễn phí cho máy trạm

<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


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: