Script shell debugging: Memeriksa sintaksis tanpa mengeksekusi


9

Apakah ada beberapa opsi yang bisa saya berikan untuk hanya memeriksa sintaks dari skrip shell [bash] untuk memeriksa sintaksnya, tetapi tidak benar-benar mengeksekusi apa pun atau menyebabkan potensi kerusakan?

Jawaban:


7

Dari bash(1)halaman manual:

-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.

Jelas sekali. Saya tidak tahu mengapa saya begitu buta sehingga saya tidak bisa melihat ini ketika saya membaca halaman buku panduan.
Aeyoun

1

Coba 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.

Yah, itu tidak memberi tahu saya 'jika' hilang pada saluran 634 tapi itu cukup membantu.


Perlu dicatat bahwa Anda dapat mengunduh dan menjalankannya secara lokal, ini berjalan di Haskell.
phk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.