shellcheck
Még a Shell Scripts Matter cikk ajánlotta a shellchecket, de önmagában is megér egy bejegyzést.
Készítsünk egy nagyon egyszerű scriptet (test1.sh):
#!/bin/bash
echo hello $1
Ha elkezdjük használni, elég sokáig úgy viselkedik ahogy elvárjuk, de azért az utolsó két parancs közti különbség elsőre meglepő:
$ ./test1.sh a
hello a
$ ./test1.sh a b
hello a
$ ./test1.sh "a b"
hello a b
$ ./test1.sh "a* b"
hello a* b
$ ./test1.sh "t* b"
hello test1.sh test2.sh b
Egy ilyen rövid scriptben persze könnyen megtalálhatjuk a hibát, de sokkal egyszerűbb a scriptjeinket shellcheckkel ellenőriztetni:
$ shellcheck test1.sh
In test1.sh line 2:
echo hello $1
^-- SC2086: Double quote to prevent globbing and word splitting.
Ezután már egyértelmű a javítás (test2.sh):
#!/bin/bash
echo hello "$1"
A script úgy működik, ahogy elvárható:
$ ./test2.sh a
hello a
$ ./test2.sh a b
hello a
$ ./test2.sh "a b"
hello a b
$ ./test2.sh "a* b"
hello a* b
$ ./test2.sh "t* b"
hello t* b