Bu, otomatikleştirmek için basit bir görev değildir, çünkü bir komut dosyası statik analizi bozan yapıları kullanabilir. Hiç kullanıyorsa eval
ya da benzeri herhangi bir önek time
veya nice
bu gibi bir şey koşma gibi basit olarak olmayacak egrep -o '^[^ ]+ ? '
almak için komutlar ve yoluyla çalışan which
veya type
.
Sonunda, kesinlikle emin olmanın tek yolu betiği çalıştırmak ve neyin başarısız olduğunu bulmaktır. Bir komut dosyası iyi yazılmışsa, çalıştırmadan önce standart olmayan komutları kontrol eder. Değilse, deneme yanılma kesin olmanın tek yoludur.
Bunu söyledikten sonra, böyle bir şey yardımcı olabilir:
#!/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
Çıktı şöyle görünecektir:
$ ./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