<Trước | Nội dung | Tiếp theo>
Mã thông báo bị thiếu hoặc không mong muốn
Một lỗi phổ biến khác là quên hoàn thành một lệnh ghép, chẳng hạn như if or trong khi. Hãy xem điều gì sẽ xảy ra nếu chúng ta xóa dấu chấm phẩy sau thử nghiệm trong if chỉ huy:
#! / 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] thì
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] thì
echo "Số bằng 1." khác
echo "Số không bằng 1."
fi
Kết quả là:
[tôi @ linuxbox ~] $ rắc rối
/ home / me / bin / rắc rối: dòng 9: lỗi cú pháp gần mã thông báo không mong muốn
`khác '
/ home / me / bin / rắc rối: dòng 9: `` khác '
[tôi @ linuxbox ~] $ rắc rối
/ home / me / bin / rắc rối: dòng 9: lỗi cú pháp gần mã thông báo không mong muốn
`khác '
/ home / me / bin / rắc rối: dòng 9: `` khác '
Một lần nữa, thông báo lỗi chỉ ra một lỗi xảy ra sau sự cố thực tế. Những gì xảy ra thực sự khá thú vị. Như chúng tôi nhớ lại, if chấp nhận một danh sách các lệnh và đánh giá mã thoát của lệnh cuối cùng trong danh sách. Trong chương trình của chúng tôi, chúng tôi dự định danh sách này sẽ bao gồm một lệnh duy nhất, [, một từ đồng nghĩa với thử nghiệm. Các [ lệnh nhận những gì sau nó như một danh sách các đối số; trong trường hợp của chúng tôi, bốn đối số: $ number, 1, =và ]. Khi xóa dấu chấm phẩy, từ sau đó được thêm vào danh sách các đối số, đối số này hợp pháp về mặt cú pháp. Sau bỏ lỡ lệnh cũng hợp pháp. Nó được hiểu là một lệnh khác trong danh sách các lệnh if sẽ đánh giá cho một mã thoát. Các khác được phản đối tiếp theo, nhưng nó không đúng chỗ, vì shell nhận ra nó là từ dành riêng (một từ có ý nghĩa đặc biệt đối với trình bao) chứ không phải tên của lệnh, do đó thông báo lỗi.
<Trước | Nội dung | Tiếp theo>