Це непросте завдання для автоматизації, оскільки сценарій може використовувати конструкції, які перемагають статичний аналіз. Якщо він коли-небудь використовує eval
будь-який префікс на кшталт time
або nice
, він не буде настільки простим, як виконання чогось, як egrep -o '^[^ ]+ ? '
отримати команди і запустити їх через which
або type
.
Зрештою, єдиний спосіб бути абсолютно впевненим - це запустити сценарій і з'ясувати, що не вдається. Якщо сценарій добре написаний, перед запуском він перевірить нестандартні команди. Якщо ні, то проба і помилка - єдиний спосіб бути впевненим.
Сказавши це, щось подібне може допомогти:
#!/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
Вихід буде виглядати так:
$ ./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