Ini bukan tugas yang mudah untuk diotomatisasi, karena skrip dapat menggunakan konstruksi yang mengalahkan analisis statis. Jika pernah menggunakan eval
atau awalan apa pun seperti time
atau nice
, itu tidak akan sesederhana menjalankan sesuatu seperti egrep -o '^[^ ]+ ? '
untuk mendapatkan perintah dan menjalankannya melalui which
atau type
.
Pada akhirnya, satu-satunya cara untuk benar-benar yakin adalah dengan menjalankan skrip dan mencari tahu apa yang gagal. Jika skrip ditulis dengan baik, skrip akan memeriksa perintah yang tidak standar sebelum dijalankan. Jika tidak, coba-coba adalah satu-satunya cara untuk memastikan.
Karena itu, sesuatu seperti ini dapat membantu:
#!/bin/bash
egrep -o -e '^[^ ]+ ? ' -e '[a-zA-Z0-9]+' "$1" | sort -u | {
while read line
do
if type $line &>/dev/null
then
echo "$line found"
else
echo "Error: $line not found"
fi
done
} | sort
Outputnya akan terlihat seperti:
$ ./check i_wonder.sh
cd found
echo found
elif found
else found
Error: abort not found
Error: checkurl not found
Error: cleanup not found
Error: count not found
Error: debug not found
Error: deleteFile not found
Error: die not found
find found
for found
grep found
if found
mv found
readarray found
rm found
shopt found
size found
sleep found
stat found
trap found
unset found
while found