What's up with spacing and syntax errors in Shell Scripts? -
i'm pretty familiar , comfortable batch scripts on windows. i've started out on unix , i'm having hard time getting hang of spacing things properly.
the script below works fine. let's call script1.sh
!#/bin/sh now=$(date +"%s") echo "this file created on $now"
this script pasted below throws error ,also i've pasted further below
!#/bin/sh now=$(date + "%s") echo "this file created on $now"
[root@localhost /]# sh postbackup.sh postbackup.sh: line 1: !#/bin/sh: no such file or directory date: operand `%s' try `date --help' more information. file created on
why space between + , "%s" matter ? additional information on how might affect in other cases extremely helpful.
you have 2 errors in script:
postbackup.sh: line 1: !#/bin/sh: no such file or directory
this because should use !#
(wrong), , not #!
(correct), , tries run !#/bin/sh
command, doesn't exist.
error otherwise harmless , "works" because call sh
explicitly sh postbackup.sh
, it's still error , should fix it.
date: operand `%s'
this doesn't work on commandline, date
expects single argument, starts +
, , provides format (%s
in case), adding space there makes two arguments, , date
doesn't know %s
belongs +
.
as said, fail if enter on command line:
$ date + %s date: operand ‘%s’
so need do, make single argument, can done either adding quotes, or escaping space \
:
$ date '+ %s' 1427897164 $ date +\ %s 1427897164
note output starts space! expected, you've given space date
.
as far know, there no way prevent leading space, except removing later ... suggest don't use space here ;-)
Comments
Post a Comment