Ok possibly the shortest coding project I have undertaken...

echo -n "Please enter filename or search criteria: "
read searchcriteria
files="`ls $searchcriteria`"

add this to both files, and delete any hard coded lines for
"searchcriteria=" or "FILES="

enjoy!
2009/11/30 Richard Forth <richard.fo...@gmail.com>

> Thanks Malcolm, that worked a treat
>
> I also learned from the linuxformat forum that I need not have specified
> $FILES as a variable at all, I could have just run:
>
> for f in *.sh
> ...
>
> which did the same thing as
>
> FILES="`ls *.sh`"
> for f in $FILES
> ...
>
> Both work perfectly under Ubuntu AND CentOS.
>
> Furthermore, for anyone interested in this thread I now have two complete
> scripts that compliment each other, the first generates all the MD5 hashes,
> the second compares all the files with their corresponding hash files:
>
>  = md5all.sh =
>
> FILES="`ls *.sh`"
>
> for f in $FILES
> do
> md5sum $f > $f.md5
> done
>
> ===========
>
>
> and
>
> = md5checkall.sh =
>
> # Searches for $searchcriteria (line 6) and checks for an associated md5
> hash, and compares the md5sum with the value stored in the .md5 file. Gives
> a Pass or a Fail.
>
> # variables for colors used in output text
> red="\033[31m";    green="\033[32m";   reset="\033[0m";   yellow="\033[33m"
>
>
> # variables
> searchcriteria="*.sh"
> files="`ls $searchcriteria`"
>
> # main script
> clear
> echo "Checking md5sum(s) for all files matching: $searchcriteria."
> echo ""
> for f in $files
> do
>    gethash="`md5sum $f`"
>    if [ -f $f.md5 ]
>    then
>       filehash="`cat $f.md5`"
>    else
>       echo -e "[$red FAIL $reset] $f >> $yellow Error: md5sum file not
> found. $reset"
>       continue # skip rest of loop
>    fi
>
>    if [ "$filehash" = "$gethash" ]
>    then
>        echo -e "[$green PASS $reset] $f"
>    else
>             echo -e "[$red FAIL $reset] $f >> $yellow Error: md5sum does
> not match md5sum file. $reset"
>       echo ""
>       echo "FILE:`md5sum $f` ($f)"
>       echo "HASH:`cat $f.md5` ($f.md5)"
>       echo ""
>    fi
> done
> echo ""
> ==============
>
> You could modify these scripts to prompt for a search criteria rather than
> have the value hard coded into the files, that minght be my next little
> project, anyway, if you find them useful, enjoy!
>
> Richard
> Amateur Codemaster lol
> 2009/11/28 Richard Forth <richard.fo...@gmail.com>
>
> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Thanks Malc, I will try that on Monday.
>>
>> Malcolm Hunter wrote:
>> >> As posted on Linux Format User Forums:
>> >>
>> >> Basically I was experimenting in shell script and was trying to create
>> a
>> >> useful script that took each file in the current directory (*.sh) and
>> for
>> >> each file, create a MD5 hash and save that hash in a file of the same
>> name
>> >> as the file (appended with a .md5 extension), so the basic script
>> looked
>> >> something like this:
>> >>
>> >>  *Code:*
>> >> FILES="*.sh"
>> >> for f in $FILES
>> >> do
>> >>    md5sum $f > $f.md5
>> >> done
>> >>
>> >>
>> >> Now, what is annoying is I have just run this at home on ubuntu
>> (debian)
>> >> and
>> >> it has done the job as expected, however when I ran this on a test box
>> at
>> >> work today running CentOS (RedHat) it kept putting ALL the MD5 hashes
>> in
>> >> one
>> >> file called "*.sh.md5", whereas what I was expecting, and what I got on
>> >> Ubuntu, was say I had some files like so:
>> >>
>> >>  *Code:*
>> >> shellscript1.sh
>> >> shellscript2.sh
>> >>
>> >>
>> >> after I run my script above in the current directory, and then run an
>> "ls"
>> >> I
>> >> should get:
>> >>
>> >>  *Code:*
>> >> shellscript1.sh
>> >> shellscript1.sh.md5
>> >> shellscript2.sh
>> >> shellscript2.sh.md5
>> >>
>> >>
>> >> Can anyone explain this deviant behaviour on Red Hat and give any tips
>> >> that
>> >> would allow the shellscript to work on either platform?
>> >>
>> >> Oh yes and if the code above is of any use you are welcome to it, and
>> >> modify/redistribute as you see fit. It was a test really as I am
>> learning
>> >> "loops" at the moment and wondered if I could write a script that works
>> >> with
>> >> each file in a given folder.
>> >
>> > Using "*" gives unpredictable results depending on the context. Better
>> to use the output of a command:
>> >
>> > LIST=`ls *.sh`
>> >
>> > Cheers,
>> > Malc
>> >
>>
>> - --
>> *****
>> Richard Forth
>>
>> Great Natural Health and wellbeing products
>> http://www.aloevera-crowland.co.uk/
>>
>>
>> ================================
>> Do you want to work from home?
>> Part-Time? Running your own business?
>>
>> Call me now to find out about opportunities
>> in your area 07870 897755.
>> ================================
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.9 (GNU/Linux)
>> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>>
>> iEYEARECAAYFAksRppwACgkQQ6xgmxzOp8nVMwCZAclLYq/a7vRzDVgLuskPdoyj
>> UXYAn2sdOBmtKBckkaKGbIv6ROOfBYHf
>> =2mD7
>> -----END PGP SIGNATURE-----
>>
>
>
>
> --
> *****
> Richard Forth
>
> For great natural health, nutrition, animal care and beauty products, visit
> my online store:
>
> http://www.aloevera-crowland.co.uk
>
> To change your life and circumstances:
>
> http://www.soaringteam.com/users/invite/MyVideoPage.php?Passcode=2118&src=38&v=3
>
> Text OPPORTUNITY and your name to:
>
> 07870 89 77 55
>
>
>
>


-- 
*****
Richard Forth

For great natural health, nutrition, animal care and beauty products, visit
my online store:
http://www.aloevera-crowland.co.uk

To change your life and circumstances:
http://www.soaringteam.com/users/invite/MyVideoPage.php?Passcode=2118&src=38&v=3

Text OPPORTUNITY and your name to:

07870 89 77 55
_______________________________________________
Peterboro mailing list
Peterboro@mailman.lug.org.uk
https://mailman.lug.org.uk/mailman/listinfo/peterboro

Reply via email to