Yes you are quite right I forgot the "hash-bang" /bin/bash on the first line
Many thanks well spotted! Richard 2009/11/30 Steve Tompkins-MacQueen <st...@tophome-ip.net> > Hi there > > From reading the replays I don't think any one has mentioned that the first > line of a script should tell the shell what shell the sripte was wrien for: > > Code > > #!/bin/bash > > or > > #!/bin/sh > > or > > #!/bin/zsh > > or > > #!/bin/cash > > > and so on: > > This tells the shell witch shell to run the script in and is important as > each shell has some different commands commands and some difent ways of > (this is a relay difficult word for me to spell) intertptering / passing > things. > > Steve > > > On 30 Nov 2009, at 12:36, Richard Forth wrote: > > 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 > > > > _______________________________________________ > Peterboro mailing list > Peterboro@mailman.lug.org.uk > https://mailman.lug.org.uk/mailman/listinfo/peterboro > -- ***** 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