Tôi đã làm một thử nghiệm nhỏ với đoạn mã sau:
#!/bin/bash
if [ -f "buggyScript.sh" ; then
echo "found this buggy script"
fi
Lưu ý các thiếu] trong nếu. Bây giờ tôi đã nhập
bash -n buggyScript.sh
và mất tích] không được phát hiện.
Các kịch bản thử nghiệm thứ hai trông như thế này:
#!/bin/bash
if [ -f "buggyScript.sh" ]; then
echo "found this buggy script"
Lưu ý fi mất tích tại ở cuối nếu. Thử nghiệm này với
bash -n buggyScript.sh
trở
buggyScript.sh: line 5: syntax error: unexpected end of file
Kết luận: kiểm tra kịch bản với tùy chọn n phát hiện một số lỗi, nhưng không có nghĩa là tất cả chúng. Vì vậy, tôi đoán bạn thực sự tìm thấy tất cả các lỗi chỉ trong khi thực hiện kịch bản.
Nó dường như không hoạt động. Tôi đã thi hành ksh -n test.sh nhưng nó không liệt kê ra lỗi cú pháp đã có trong test.sh – sachin
Có nó không hoạt động. Tôi chắc chắn không có lỗi cú pháp. Nếu bạn chỉ cho chúng tôi kịch bản chúng tôi có thể phân tích nếu bạn mong đợi việc tìm ra lỗi cú pháp là chính xác. – Jens
Sau đó thử với 'sh -n script'. Nó sẽ hoạt động. Tuy nhiên, nếu lỗi cú pháp của bạn nằm trong một tên lệnh không hợp lệ, điều đó sẽ chỉ bị bắt khi chạy. 'sh -n' chỉ kiểm tra cú pháp shell thực tế. – tripleee