Gỡ lỗi kịch bản lệnh shell: Kiểm tra cú pháp mà không thực hiện


9

Có một số tùy chọn tôi có thể đưa ra để chỉ kiểm tra cú pháp của tập lệnh shell [bash] để kiểm tra cú pháp của nó, nhưng không thực sự thực thi bất cứ điều gì cũng như không gây ra thiệt hại tiềm năng nào?

Câu trả lời:


7

Từ bash(1)trang người đàn ông:

-n      Read commands but do not execute them. This may be used to check a
        shell script for syntax errors. This is ignored by interactive shells.

Chắc chắn. Tôi không biết tại sao tôi bị mù đến nỗi tôi không thể nhìn thấy điều này khi tôi xem qua các trang hướng dẫn.
Aeyoun

1

Hãy dùng thử http://www.shellcheck.net

$ shellcheck myscript.sh

    In myscript.sh line 590:
    for f in $*; do
    ^-- SC1009: The mentioned parser error was in this for loop.


    In myscript.sh line 617:
        if [ ! -e "$somefile".vcf ]; then
        ^-- SC1046: Couldn't find 'fi' for this 'if'.
        ^-- SC1073: Couldn't parse this if expression.


    In myscript.sh line 1026:
    done
    ^-- SC1047: Expected 'fi' matching previously mentioned 'if'.
        ^-- SC1072: Unexpected keyword/token. Fix any mentioned problems and try again.

Chà, nó không cho tôi biết 'nếu' bị thiếu trên dòng 634 nhưng nó khá hữu ích.


Cũng đáng lưu ý rằng bạn có thể tải xuống và chạy nó cục bộ, nó chạy trong Haskell.
phk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.