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

Reply via email to