Help with scripting

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Help with scripting
# 1  
Old 05-01-2012
Help with scripting

Hi, am a student and i have homework about bourne shell script and i am having difficulties because i've never written this kind of scripts.

1. The problem statement, all variables and given/known data:
So i have to write a script that check if files header.txt, content.txt and footer.txt exist.
If they exist i have to read every one of them and use the lines without "#" and to generate HTML file with this data ( the data from header.txt shoud be copied between header tags, content.txt between body tags and footer.txt between footer.tags. Atleast i am understanding it like that) After that i have to check if the HTML file modify date is older than the other 3 files to create a new one HTML file., but if the HTML file is newer to exit the script.


2. Relevant commands, code, scripts, algorithms:



3. The attempts at a solution (include all code and scripts):
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 (test $file4 -ot $file1 -a $file4 -ot $file2 -a $file4 -ot $file3)
           then   # create new HTML
           else exit()
         fi
  else 
    cat > project.html<< eof
    <body>
    <header> 
    cat >> header.txt 
    </header>
    cat >> content.txt
    <footer>
    cat >> footer.txt
    </footer>
   </body>
   eof
   echo "Project.html has been created"
fi

Can you help me with the script how to create the HTML file and copy the data from the other 3 files(without the lines starting with#) in the HTML file because i am obviously not doing it as i shoud. I did the check for the file and i think i did the check for the modify date, but something about creating the file and copy the data dowsn't work. this is the peace of code for help

Code:
if [ -e $file4 ]
  then if (test $file4 -ot $file1 -a $file4 -ot $file2 -a $file4 -ot $file3)
           then   # create new HTML
           else exit()
         fi
  else 
    cat > project.html<< eof
    <body>
    <header> 
    cat >> header.txt 
    </header>
    cat >> content.txt
    <footer>
    cat >> footer.txt
    </footer>
   </body>
   eof
   echo "Project.html has been created"
fi

I check for the project.html (file4), if it exist it should compare the modify dates and if the html is older to create new one, or if it isn't older to exit. Else If the html doesn't exist just to create one.

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
Technical University Gabrovo, Gabrovo, Bulgaria, Nikolai Ivanov, we don't have course number.

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 05-01-2012
Hi, the closing label of a here document (eof) needs to at the very start of a line with no spaces behind it. To reproduce the content of a file within a here-document, try the $( ... ) construct. look up in the man page what >> means and always put double quotes around variable references (why?).
# 3  
Old 05-03-2012
Quote:
if [ -e $file4 ]
then if (test $file4 -ot $file1 -a $file4 -ot $file2 -a $file4 -ot $file3)
then # create new HTML
else exit()
fi
else
#Code to create HTML
fi
This section of script can be simplified such that it will work whether or not the HTML file is already present and such that it creates an updated HTML if any of the input files has been changed since we last ran the script. It also gets the Here document out of the "if" test where it was not going to be created every time it should have been created.
Code:
if [ -e $file4 ]
then
          if [ $file4 -ot $file1 -o $file4 -ot $file2 -o $file4 -ot $file3 ]
          then
                 :
          else
                 exit
          fi
fi
#Code to create HTML

In this context the colon : is a "do nothing" command to avoid the syntax error caused by having a then immediately followed by an else. I'll leave you to sort out the double quotes round the string variables as per Scrutinizer's advice.

Last edited by methyl; 05-03-2012 at 12:28 PM.. Reason: logic error
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Web Development

Perl scripting or shell scripting?

i am going to study any one of the scripting languages mentioned above(shell 0r perl scripting) . Which is having more scope for a fresher? (1 Reply)
Discussion started by: Anna Hussie
1 Replies

2. What is on Your Mind?

Shell Scripting vs Perl scripting

Gents, I have been working in a Solaris/Unix environment for about 9 months. I took some linux classses online before getting the job. But, I am not very good at scripting. I want to learn how to script. Do you think that I should start with Shell scripting or Perl? I wanted to continue with... (2 Replies)
Discussion started by: Pouchie1
2 Replies

3. Android

Android Scripting Environment: Shell Scripting and Android

I just upgraded to Android 2.2 from 2.1. The GPS issue that was troublesome in 2.1 seems to have been fixed. Some of web browsing seems faster, but it could just be my connection is better today ;) Flash works in some browsers but not very good and it is too slow for Flash apps designed for... (0 Replies)
Discussion started by: Neo
0 Replies

4. What is on Your Mind?

Shell scripting vs Perl scripting

Hi all, I would like to start developping some good scripting skills. Do you think it would be best to start with shell scripting or Perl? I already got a fundation, really basics, in perl. but I am wondering what would be best to be good at first. Can you please help me determine which one to... (14 Replies)
Discussion started by: Pouchie1
14 Replies

5. Shell Programming and Scripting

Call Shell scripting from Perl Scripting.

Hi How to call a shell scripting through a Perl scripting? Actually I need some value from Shell scripting and passes in the Perl scripting. So how can i do this? (2 Replies)
Discussion started by: anupdas
2 Replies

6. UNIX for Dummies Questions & Answers

Scripting Help

Hello all. Like Ive stated before, I am new to world of Unix. I was given the tast to create a script that will concatenate 20 files into one file. I know that the cat command is to be used but I am looking for something to get started on. Again, basically I need to wrtie a script that whill... (3 Replies)
Discussion started by: ndoggy020
3 Replies

7. UNIX for Advanced & Expert Users

Need help on scripting

in unix bc command is used as calculator and also for conversion, i want to convert 5f to decimal. but bc dont consider 5f as hex value it considers 5F as hex value. I get 5f from other iteration so i cant change that f to F...is there any way to convert 5f to decimal ot 5f to 5F :rolleyes: (2 Replies)
Discussion started by: abhinandantn
2 Replies

8. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies

9. Shell Programming and Scripting

scripting guru's pls help me with scripting on AIX

can someone pls help me with the script for a files coming from one system to a particular directory and i want to write a script to move those files to another directory on different system by renaming the files... pls someone help me on this... thanking in anticipation.... (1 Reply)
Discussion started by: thatiprashant
1 Replies

10. AIX

New to scripting

We have a scripting requirement, Background: On a particular path, we compress a load of log files into tar.gz. This is done on an hourly basis throughout the day and it produces files of the following format, 2005-08-05-00-021031.tar.gz as an example. This is done by a script. We need: ... (2 Replies)
Discussion started by: rajesh_149
2 Replies
Login or Register to Ask a Question