Hi all
I have a little problem with bourne shell. I've just started writing that kind of scripts
I have to write a script that search in folder for header.txt, footer. and content.txt. If these files exists i have to copy the content from them (ignoring the lines with #) and generate HTML file with this content where the content from file footer.txt goes between footer tags, the text from header.txt in header tags and content between them. After that I have to check date of the files. If the tree files are newer than the HTML i have to generate a new one , if not to exit the script. In the three files (header.txt, footer. and content.txt) i can have all kind of text withoth head and body tags.

 #!/bin/sh
 echo "Enter folder path: "
read path
cd
cd $path
 file1="header.txt" 
file2="footer.txt"
file3="content.txt"
file4="project.html" 
 if [ -e $file1 ]
    then echo "Header.txt exists"
    else echo "Header.txt doesn't exists"
fi
 if [ -e $file2 ]
    then echo "Footer.txt exists"
    else echo "Footer.txt doesn't exists"
 fi
 if [ -e $file3 ]
    then echo "Content.txt exists"
    else echo "Content.txt doesn't exists"
fi
if [ -e $file4 ]
    then //if file exists i have to check the modify dates and if the HTML file is older than the other 3 to I have to create a new HTML else to exit
    else //if the file doesn't exist to create one
 fi

Can anyone help me , please
Thank you in advance

Edited 4 Years Ago by spawn2004

If file exists i have to check the modify dates and if the HTML file is older than the other 3 to I have to create a new HTML else to exit

You can sort the file based on the Modification time by using

    ls -rt1 $file1 $file2 $file3 $file4

Now check the firstline of the output, if it contains "project.html" then create a new HTML file.

Edited 4 Years Ago by b1izzard

thank you for that advise ,but my problem is how to create the html file (file4) and copy the data from the other three file in that one . I use this code

cat > $file4 <<- _EOF_
<HTML>
 <HEAD>
   <TITLE>
   </TITLE>
 </HEAD>
 <BODY>
 </BODY>
</HTML>
_EOF_
echo "Project.html has been created"

I put this code in line 24 after "else" but this doesn't help me . I can not figure out how to read the three files and put the data from them in the body tag. For example the data from header.txt should be copy between header tags in the body.

"> filename
Connect standard output to the file filename. This allows you to save the output of a command to a file. If the file does not exist, it is created. If it does exist, it is emptied before anything happens."
this is what i've read in website for bourne shell programing. I can't find anything about HTLM problem that i have

Edited 4 Years Ago by spawn2004

hi,

if file exists i have to check the modify dates and if the HTML file is older than the other 3 to I have to create a new HTML

this tests £file4 is older than the other files

test $file4 -ot $file1 -a $file4 -ot $file2 -a ...

if previous is true; then

look at what this does

cat > finalFile<<eof
header
$(<header.txt)
body
$(body.txt)
foot
$(<footer.txt)
end
eof

and adapt to your case.

ah, your using SH :(
this won't work then, sorry.

you need to echo tags and cat file between each echo, using >> to append.

Edited 4 Years Ago by Watael

I get to here with the code

#!/bin/sh
echo "Enter folder path: "
read path
cd
cd $path
file1="header.txt" 
file2="footer.txt"
file3="content.txt"
file4="project.html" 
if [ -e $file1 ]
  then echo "Header.txt exists"
  else echo "Header.txt doesn't exists"
fi
if [ -e $file2 ]
  then echo "Footer.txt exists"
  else echo "Footer.txt doesn't exists"
fi
if [ -e $file3 ]
  then echo "Content.txt exists"
  else echo "Content.txt doesn't exists"
fi
if [ -e $file4 ]
  then
        if  [ $file4 -ot $file1 ] && [ $file4 -ot $file2 ] && [ $file4 -ot $file3];
        then
        (cat <<_EOF
<body>
<header>
$(cat < $file1 )
</header>
$(cat < $file3)
<footer>
$(cat < $file2)
</footer>
</body>
_EOF
)> project.html
        echo "Project.html has been updated"
        else exit(0) 
        fi
  else
(cat <<_EOF
<body>
<header>
$(cat < $file1 )
</header>
$(cat < $file3)
<footer>
$(cat < $file2)
</footer>
</body>
_EOF
)> project.html
echo "Project.html has been created"
fi  

but when i start it and i have on error : ./project.sh: 39: Syntax error: word unexpected (expecting ")") can you help me with that.
And what have i to write to cat only the lines which don't start with # from the files 1,2 and 3 ?

This question has already been answered. Start a new discussion instead.