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

Reply via email to