นี่ไม่ใช่งานง่ายที่จะทำให้เป็นอัตโนมัติเพราะสคริปต์อาจใช้โครงสร้างที่เอาชนะการวิเคราะห์แบบคงที่ ถ้ามันไม่เคยใช้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