[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script challenge



On Sat, Jan 14, 2006 at 01:49:07PM +0100, David Jardine wrote:
> On Sat, Jan 14, 2006 at 11:37:42AM +0100, John Smith wrote:
> > Hi All,
> > 
> > 	which heroe can tell me why the following does not work :
> > 
> > #!/bin/sh
> > cat <<EOF >newscriptfile.sh
> > #!/bin/sh
> > NOWS=$(date +%S)
> > NOWS=${NOWS#0}
> > NOWM=$(date +%M)
> > NOWM=${NOWM#0}
> > NOWH=$(date +%H)
> > NOWH=${NOWH#0}
> > FROMNOW=$1
> > 
> > MINUTE=$((${NOWM} + ${FROMNOW}))
> > MINUTE=$((${MINUTE} % 60))
> > HOUR=$((${NOWM} + ${FROMNOW}))
> > HOUR=$((${HOUR} / 60))
> > HOUR=$((${NOWH} + ${HOUR}))
> > HOUR=$((${HOUR} % 24))
> > echo $HOUR" "$MINUTE
> > EOF
> > 
> > 	It's driving me nuts!!!
> > 
> I don't know why it doesn't work (I know pretty little about shell 
> programming), but the following does work (for me, anyway):
> 
> #!/bin/sh
> echo '#!/bin/sh
> NOWS=$(date +%S)
> NOWS=${NOWS#0}
> NOWM=$(date +%M)
> NOWM=${NOWM#0}
> NOWH=$(date +%H)
> NOWH=${NOWH#0}
> FROMNOW=$1
> 
> MINUTE=$((${NOWM} + ${FROMNOW}))
> MINUTE=$((${MINUTE} % 60))
> HOUR=$((${NOWM} + ${FROMNOW}))
> HOUR=$((${HOUR} / 60))
> HOUR=$((${NOWH} + ${HOUR}))
> HOUR=$((${HOUR} % 24))
> echo $HOUR" "$MINUTE' >newscriptfile.sh
> 

Ah, I know a little more now about shell programming (man bash).  
Your original script works if you quote the 'here-word', ie, line 
two should read:

cat <<'EOF' newscriptfile.sh

to prevent parameter expansion in the text.

Thanks, John, for giving me the chance to learn a little more :)

Cheers,
David

-- 
David Jardine

"Running Debian GNU/Linux and
loving every minute of it."  -L. von Sacher-M.(1835-1895)



Reply to: