1st yr Exam revision thread - Scripts, C, Commands

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions 1st yr Exam revision thread - Scripts, C, Commands
# 1  
Old 05-25-2013
1st yr Exam revision thread - Scripts, C, Commands

Hello, I have an exam for 1st year Linux and Unix programming coming up in a week and I need some help going over the past exams, I want to make sure I'm getting the right answers in the past exams to ensure full marks.

The internet is a distraction so making this thread will hopefully help me focus! Also, it will be good revision for anyone else in the same boat, while hopfully helping me commit it to memory and understand it better, and the questions should be pretty easy Smilie

1. Write a bash script for the minimum program that works as follows:
Code:
$ min  2 3
The minimum of 2 and 3 is 2

Heres my answer:
Code:
#!/bin/bash
 
if 
$1 < $2
echo "The minimum of $1 and $2 is $1"
else
echo "The minimum of $1 and $2 is $2"
fi

Pseudocode:
If
arg1 is less than arg2
output: "the minimum of arg1 and arg2 is arg1"
else
output: "the minimum of arg1 and arg2 is arg2"

Is my algorithm correct? The program compiles, but when I run it I get syntax error. What is the correct syntax please help.

---------- Post updated at 11:13 AM ---------- Previous update was at 10:43 AM ----------

Figured it out Smilie

Code:
if
[[ "$1" < "$2" ]];
then
echo "The minimum of $1 and $2 is $1"
else
echo "The minimum of $1 and $2 is $2"
fi

It works and outputs correctly. Do you think this answer would get full marks in an exam?

2. What is the search path for the shell?

Last edited by murphy; 05-25-2013 at 01:45 PM..
# 2  
Old 05-25-2013
It isn't obvious to me that this shouldn't be treated as homework and be required to have been posted in the Homework & Coursework Questions forum and adhere to the special rules associated with that forum. I'll leave that determination to the moderators, but I'll treat my responses as if it had been posted there.

I had never seen an if statement coded this way, but after looking at the grammar for the shell, it is a valid format. More common ways of coding if statements would be:
Code:
if [[ condition ]]
then
    true branch code
else
    false branch code
fi

or
Code:
if [[ condition ]]; then
    true branch code
else
    false branch code
fi

Although indentation is not required by the shell (and it may seem unimportant for a trivial case like this script), when the code in the true and false sections becomes more complex, indentation will make your code much easier to read. I strongly suggest that you get into the habit of always using a consistent indentation style and stick with it no matter how trivial the script is.

Other than using 2 and 4 as operands to your script, what values have you used to convince yourself that this script is working correctly? When you issue the commands:
Code:
min 8 10
    and
min 10 2

do you get what you expected?

Do you intend for your script to compare numeric values or alphanumeric string values?
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 05-26-2013
Quote:
Originally Posted by Don Cragun
It isn't obvious to me that this shouldn't be treated as homework and be required to have been posted in the Homework & Coursework Questions forum and adhere to the special rules associated with that forum. I'll leave that determination to the moderators, but I'll treat my responses as if it had been posted there.

I had never seen an if statement coded this way, but after looking at the grammar for the shell, it is a valid format. More common ways of coding if statements would be:
Code:
if [[ condition ]]
then
    true branch code
else
    false branch code
fi

or
Code:
if [[ condition ]]; then
    true branch code
else
    false branch code
fi

Although indentation is not required by the shell (and it may seem unimportant for a trivial case like this script), when the code in the true and false sections becomes more complex, indentation will make your code much easier to read. I strongly suggest that you get into the habit of always using a consistent indentation style and stick with it no matter how trivial the script is.

Other than using 2 and 4 as operands to your script, what values have you used to convince yourself that this script is working correctly? When you issue the commands:
Code:
min 8 10
    and
min 10 2

do you get what you expected?

Do you intend for your script to compare numeric values or alphanumeric string values?
Thanks for the reply I appreciate it, I also wasn't sure if this should be in the homework section, I didn't want to clog it up as I want to keep this alive for a week. If the mods wants to move it they can, and some of the questions I am going to ask are pretty basic Smilie

My program is working fine, with any values I throw at it.
Code:
min 205 204

Will output:
Code:
The min of 205 and 204 is 204

The same when the numbers are reversed, I'm happy with that, also I will remember to indent more,ty.

Heres some more questions, are the ansers I've given correct? Will they get all the marks?

a) What is the purpose of the shell?
The shell is a program that interprets commands and acts as an intermediary between the user and the inner workings of the operating system.
b) What is the search path for the shell?
The search path is contained in the C shell “path” variable. Like all C shell variables, it can be referenced by placing a dollar sign in front of the name. The current search path can be printed with % echo $path.
The search path is also a component of the environment which is passed from process to process, independent of the shell.
c) Using the curses library, what commands would you use to
- Clear the whole screen.
clear();
- Clear only the first two lines of the screen.
Deleteln??
I am unsure about what command to use in the last one, theres seems to be alot of commands in the curses library for removing lines, but I can't seem to find the specific one that deletes the first two lines. Any hints?
# 4  
Old 05-26-2013
Quote:
Originally Posted by murphy
Thanks for the reply I appreciate it, I also wasn't sure if this should be in the homework section, I didn't want to clog it up as I want to keep this alive for a week. If the mods wants to move it they can, and some of the questions I am going to ask are pretty basic Smilie
Moderator's Comments:
Mod Comment Some administrative notes:

I understand that this is a borderline case and appreciate the consideration. Nevertheless you should have contacted any moderator or admin to get a decision on this. In fact we are here to help you and we appreciate being asked for help because this justifies us bossing around innocent users like i do right now. ;-))

My heartfelt thanks go to Don Cragun for showing so much consideration. I really appreciate this.

In my opinion this thread is better suited to the "Homework and Coursework" board and i am going to transfer it there. Please supplement the missing information from the questionnaire, which is obligatory in this part of the board:

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course)


Now to the threads content itself:

Quote:
Originally Posted by murphy
My program is working fine, with any values I throw at it.
Code:
min 205 204

Will output:
Code:
The min of 205 and 204 is 204

The same when the numbers are reversed, I'm happy with that, also I will remember to indent more,ty.
I am not sure if this is in the scope of the question, but i miss some input validation: what will happen in the following cases:

Code:
min 0 -1
min -2 -5
min foo bar
min 1.5 1.6
min 0 1 2
min 1
min

Right now the behavior of your program is not only "unspecified" but also "not determined" and this is generally a bad idea, as the venerable Don Cragun probably knows best of us all.

It is good style to make programs as foolproof as possible, which means: always validate your assumptions. If you get input from users check if it is what you expect it to be. If you allocate temporary space (i.e. by using a tempfile) make sure the file system provides the free space you expect to need. If you want to write a file make sure the privileges the script is run under include write access there - etc., etc., ... True, this makes scripts a lot more complicated (i often end up writing 100 lines for basically executing a single command), but it also will make sure it exits with some defined state.

Always strife to build programs as finite-state machines. They do not always have to carry out their goal, but at least they should respond in a defined way to obstacles. Specifically for your script: it doesn't need to "correct" unintended inputs, but it should react with some defined exit state and/or some error message telling the reason why it can't continue.

Heres some more questions, are the ansers I've given correct? Will they get all the marks?

Quote:
Originally Posted by murphy
b) What is the search path for the shell?
The search path is contained in the C shell “path” variable. Like all C shell variables, it can be referenced by placing a dollar sign in front of the name. The current search path can be printed with % echo $path.
The search path is also a component of the environment which is passed from process to process, independent of the shell.
hmm.... First, I'd like to doubt that you are using or are being tought csh. Using csh is more than antiquated today, it is not POSIXly correct and generally csh Programming Considered Harmful as Tom Christiansen has pointed out already in 1996.

Second, if you indeed use csh: check your answer again, very carefully. UNIX is neither "Unix" nor "unix", you know. ;-))

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Saltstack commands inside bash scripts donā€™t work

In a Redhat Linux environment, I could run salt commands on the $ prompt but not inside my bash scripts. It will say command not found and the $PATH variable is exactly the same outside and inside the script. !#/usr/bin/bash echo “running”¯ salt "*" cmd.run ‘ls' exit Output:-... (8 Replies)
Discussion started by: gurudewa
8 Replies

2. UNIX for Beginners Questions & Answers

UNIX commands and scripts

Hi guys, Hoping someone can help with the below - involves basic commands and some scripting. Thanks so much in advance for your amazing time and help. 3. The file /etc/profile contains the default initialization options for your shell. Produce a unique list of all variables with uppercase... (1 Reply)
Discussion started by: edujs7
1 Replies

3. UNIX for Dummies Questions & Answers

Display Pie Chart/Bar Graph in microsoft outlook email using UNIX commands/Shell scripts

I have a shell script which executes to write html codes into a text file. My next step is to email the text file so that receiving person (people who i send email to) should be able to see pie/chart or bar graph (whatever i design in my code) in their email. Following is the example of a sample... (7 Replies)
Discussion started by: bikerboy
7 Replies

4. Homework & Coursework Questions

Calculating Total and Averages with awk Commands & Scripts

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Write an awk script(company.awk) for the workers file to find the number of workers of each departman, total... (8 Replies)
Discussion started by: RedJohn
8 Replies

5. Shell Programming and Scripting

Bash scripts as commands

Hello, the bulk of my work is run by scripts. An example is as such: #!/bin/bash awk '{print first line}' Input.in > Intermediate.ter awk '{print second line}' Input.in > Intermediate_2.ter command Intermediate.ter Intermediate_2.ter > Output.out It works the way I want it to, but it's not... (1 Reply)
Discussion started by: Leo_Boon
1 Replies

6. UNIX for Dummies Questions & Answers

1st time with scripts

Hello everyone. I am new to writing scripts and I am trying to figure out how to get it to work on a unix system. I am currently using windows xp to write my scripts. My questions are: 1. If the scripts are writtin in Wordpad, what do I save them as before converting them on unix? 2. After... (3 Replies)
Discussion started by: Jeonsah
3 Replies

7. Shell Programming and Scripting

writing shell scripts of commands

can anyone help me in writing a shell script to visualize how simple commands work and on what logic. For Eg: ls command how it lists out all the files and directories, need to write a simple script based on the commands source code.:D (0 Replies)
Discussion started by: rahul_11d
0 Replies

8. Shell Programming and Scripting

Running shell scripts automatically without using Batch or at commands

I have been trying to run a unix script which contains many sql statements.I need to run this script every monday morning. I tried to run on command prompt, it works fine. But while I run it via batch or at command., it returns with library module could not be loaded (libcompat.1.o could not be... (3 Replies)
Discussion started by: ritzwan0
3 Replies

9. Post Here to Contact Site Administrators and Moderators

deletion of thread backup scripts!!!

I have posted a thread backup scripts. Can you assist in deletion of the said thread. Thanks and Regds Kamlesh (1 Reply)
Discussion started by: kamlesh_p
1 Replies
Login or Register to Ask a Question