#!/bin/bash # script-detector.sh: Detects scripts within a directory. TESTCHARS=2 # Test first 2 characters. SHABANG='#!' # Scripts begin with a "sha-bang." for file in * # Traverse all the files in current directory. do if [[ `head -c$TESTCHARS "$file"` = "$SHABANG" ]] # head -c2 #! # The '-c' option to "head" outputs a specified #+ number of characters, rather than lines (the default). then echo "File \"$file\" is a script." else echo "File \"$file\" is *not* a script." fi done exit 0 # Exercises: # --------- # 1) Modify this script to take as an optional argument #+ the directory to scan for scripts #+ (rather than just the current working directory). # # 2) As it stands, this script gives "false positives" for #+ Perl, awk, and other scripting language scripts. # Correct this.