Visit The New, Modern Unix Linux Community


Need help on how to execute several programs


 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Need help on how to execute several programs
# 1  
Need help on how to execute several programs

1. The problem statement, all variables and given/known data:

Get each of these programs to run. Prove that you've done this(use script). Give a description of each program along with sample executions.

These are the exact programs we were given.

2. Relevant commands, code, scripts, algorithms:
PROG2:

Code:
#!/bin/sh
#beginline endline file
sed -n $1,$2p $3


PROG3:

Code:
#
set pwrs=(00000000)
@pwrs[1]=1
@next=2
while($next<9)
   @last=$next+1
   @pwrs[$next]=$pwrs[$last]*2
   @next=$next+1
end

@count=1
while($count<=8)
   echo $pwrs[$count]
   @count=$count+1
end



PROG4:

Code:
#!/bin/csh -v
#-fvx
# usage:prog4 [dir(s)]

if($#argv==0) then
        set dir="."
else
        set dir=$argv[1]
endif

while(1)
        if(! -d $dir) then
                echo $0 no directory $dir
        else
                echo $dir
                @ fcount=0
                @ dcount=0
                foreach file($dir/*)
                        if(-f $file) then
                                @ fcount++
                        else if(-d $file) then
                                @ dcount++
                        endif
                end
                echo $fcount files $dcount directories
        endif
        if($#argv<=1) then
                break
        else
                shift
                set dir=$argv[1]
        endif
end


3. The attempts at a solution (include all code and scripts):

I am not sure how to execute the programs. I attempted to execute them using ./<filename> with the files being prog2, prog3, and prog4 respectively, but I don't know what arguments to pass if any. The programs are written in the vi editor, but I tried writing one program(which is not listed here) using the script command and it did not work. I also don't know how to actually print the results to turn them in, I only know how to use the snipping tool to screenshot.

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

SUNY Polytechnic Institute, Utica, NY, US, Cavallo, CS307


Any help is greatly appreciated, it is due 10/22 at 12pm EST

Moderator's Comments:
Mod Comment edit by bakunin: please use CODE-tags like the ones i edited in for you. Thank you.

Last edited by bakunin; 10-21-2018 at 12:37 AM..
# 2  
Quote:
Originally Posted by FaTaL
I am not sure how to execute the programs. I attempted to execute them using ./<filename> with the files being prog2, prog3, and prog4 respectively, but I don't know what arguments to pass if any.
OK, have a look at the program code: to get a parameter passed to a program there are two things necessary. First, the parameters have to be passed (obviously) and second the program has to have some facility to receive parameters. Do you see any such facilities in these programs?

Second: what is necessary for some file to be recognised as executable? For instance, in DOS/Windows it is the extension "*.com" or "*.exe". What is it in UNIX?

Quote:
Originally Posted by FaTaL
The programs are written in the vi editor, but I tried writing one program(which is not listed here)
vi is just an editor - a program to write text files. A written text file is just that - it doesn't matter using which tool it was written in first place.

Quote:
Originally Posted by FaTaL
using the script command and it did not work.
Here is a tip for all your future dealings with UNIX: describe your errors exactly! "Doesn't work" can have several doezens of reasons, but an error message of "file not found" nails it down to exactly one. So, instead of telling us "didn't work" show us the command you entered (maybe it was wrongly phrased), the error message you got (maybe it tells us what went wrong) and the return code (use echo $? to get it). This way we can help you a lot better.

Quote:
Originally Posted by FaTaL
I also don't know how to actually print the results to turn them in, I only know how to use the snipping tool to screenshot.
That depends on the setup of your system. Usually there is some print queue set up.

I hope this helps.

bakunin
# 3  
These are the errors I get when attempting to run the code and I still do not understand what parameters need to be sent with ./<filename> to get the programs to execute. I'm sorry if these seem like really dumb, basic issues, I have very little experience with Unix.

prog2: I understand that there are three parameters that need to be passed($1, $2p, $3), but I don't know what they are. I assume one is a file name and another is a command, but I am not sure what the third is.

Code:
[gaben:CS307]$ ./prog2
sed: -e expression #1, char 1: unknown command: `,'

prog3: There are syntax errors in the code, but I have the code identical to the handout.

Code:
[gaben:CS307]$ ./prog3
./prog3: line 2: syntax error near unexpected token `('
./prog3: line 2: `set pwrs=(00000000)'


prog4: And prog4 simply prints out several blank lines and then an actual line of code, rather than executing.

Code:
[gaben:CS307]$ ./prog4


if ( $#argv==0 ) then
 if: Badly formed number.



Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules! (as already asked by bakunin before)

Last edited by RudiC; 10-21-2018 at 11:10 AM.. Reason: Added CODE tags.
# 4  
No problem with you "have very little experience with Unix.", but I'd be very surprised if the teacher / tutor / professor hadn't given you any hints in their lesson on how to execute a program or script. It's the same way as on many other OS, btw., e.g. MSDOS or windows.

Next to the lessons, the *nix man pages are an invaluable source of information. Look into your shell's man page for "positional parameters". You seem to use two different shells, obviuously, sh and csh, with (partly, admitted) incompatible syntax. So, what works error free in one doesn't necessarily in the other. Is that intended?

So, with the error message please also post the shell emitting it.
And, please be meticulous when programming AND posting - one space too many may lead to synatx errors there and misinterpretations here. E.g. do you have if ( $#argv==0 ) then as in post#3, or if($#argv==0) then as in post#1?


You may want to set the --xtrace (-x) shell option when running your script; this might give you (and us) some more insight on what's going on and wrong.
# 5  
Quote:
Originally Posted by RudiC
You seem to use two different shells, obviously, sh and csh, with (partly, admitted) incompatible syntax. So, what works error-free in one doesn't necessarily in the other. Is that intended?
I was not aware that I was using two different shells, although I will admit that I was in was in the wrong shell, which I did not realize until you mentioned this. My instructor told us to use tcsh which I switched to and I am still only able to get one program to execute, but I am getting slightly different errors now.

prog2 I attempted to pass with parameters

Code:
gaben:~/CS307> ./prog2 1,4d Zidane
sed: -e expression #1, char 5: extra characters after command

I know sed in an editing command and I assumed that $1,$2 were references to the lines to be edited, p is the command that will be editing those lines, and $3 is the name of the file being modified. I also attempted:

Code:
gaben:~/CS307> ./prog2 a,cd Zidane

Because I know $ means variable substitution, but this just returns a new line.

prog3 now gives me

Code:
@pwrs[1]=1: No match.
@next=2: Command not found.
next: Undefined variable.

which I assume is due to a lack of parameters.

prog4 is giving the exact same output as before.

Quote:
Originally Posted by RudiC
So, with the error message please also post the shell emitting it.
And, please be meticulous when programming AND posting - one space too many may lead to synatx errors there and misinterpretations here. E.g. do you have if ( $#argv==0 ) then as in post#3, or if($#argv==0) then as in post#1?
My code is written exactly as it is in post #1, I even copied pasted it directly from the vi editor, so the spacing and new lines are all exactly the same from the post as in the actual code.

Quote:
Originally Posted by RudiC
You may want to set the --xtrace (-x) shell option when running your script; this might give you (and us) some more insight on what's going on and wrong.
Is --xtrace (-x) something that I input on the command line, and since it is an argument, what is the command that gets passed with it? Is this something that I can find using man, and if so, in what section?


I tried to be more specific this time and tried to include everything I thought would be necessary. If there is anything else, let me know, but I am completely stuck.
# 6  
I can't talk for [t]csh. In bourne compatible shells, set -x. Me personally, I search for keywords like "option" or "set" in the respective man pages.


If your "code is written exactly as it is in post #1", how come the error msg in post#3 is different?
# 7  
Quote:
prog2: I understand that there are three parameters that need to be passed($1, $2p, $3), but I don't know what they are. I assume one is a file name and another is a command, but I am not sure what the third is.
That's a start.
Then you need to know how the sed command works: after the options (here: -n) the next word is the sed code. Usually one puts quotes around it, to make it better visible (and allow spaces in it). The next word(s) is(are) input files.
Compare this information with "man sed"; it starts with a short invocation description.
You need to read more in order to understand the given sed command, and what parameters make sense.
Quote:
./prog2 1,4d Zidane
These are two arguments! Parameter $1 will become 1,4d

The eqivalent of set -x in sh-derived shells is set echo in csh-derived shells. All shells take a -x option:
Code:
sh -x shscript
csh -x cshscript


Last edited by MadeInGermany; 10-21-2018 at 01:56 PM..

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #495
Difficulty: Easy
Blocks of code cannot be nested within each other to form sub-blocks.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Difference between inbuilt suid programs and user defined root suid programs under bash shell?

Hey guys, Suppose i run passwd via bash shell. It is a suid program, which temporarily runs as root(owner) and modifies the user entries. However, when i write a C file and give 4755 permission and root ownership to the 'a.out' file , it doesn't run as root in bash shell. I verified this by... (2 Replies)
Discussion started by: syncmaster
2 Replies

2. UNIX for Advanced & Expert Users

Check programs used most

How can you check the programs that you use most often? (6 Replies)
Discussion started by: cokedude
6 Replies

3. Shell Programming and Scripting

Automatically execute all programs in a directory

Hello. The last days I extended an open-source C++ library by some faster functions. This library provides a lot of short test programs which guarantee that the library works exactly. The compilation of each test works in a Makefile automatically. What I need is a shell script which... (5 Replies)
Discussion started by: max3000
5 Replies

4. UNIX for Dummies Questions & Answers

Are programs like sys_open( ) ,sys_read( ) et al examples of system level programs ?

Are the programs written on schedulers ,thread library , process management, memory management, et al called systems programs ? How are they different from the programs that implement functions like open() , printf() , scanf() , read() .. they have a prefix sys_open, sys_close, sys_read etc , right... (1 Reply)
Discussion started by: vishwamitra
1 Replies

5. AIX

Execute "telinit q" while programs are running ?

Hi, I want to make changes to inittab file and reread it using "telinit q" to make changes effective immediately. Is it safe to do that while important apps are running ? thanks Vilius (1 Reply)
Discussion started by: vilius
1 Replies

6. Shell Programming and Scripting

Need to execute 2 scripts, wait, execute 2 more wait, till end of file

:cool: I need to execute a shell script to do the following: cat a file run two back ground processes using the first two values from the file wait till those background processes finish run two more background processes using the next two values from the file wait till those background... (1 Reply)
Discussion started by: halo98
1 Replies

7. Shell Programming and Scripting

help to execute programs in sequence through batch

I need help to create batch file . I want to run some programs in sequence in batch mode . I have one file which contains the name of program and command The test.bat file contain this data stsrun -v devel area1.exp stsrun -v devel prime1.exp stsrun -v devel treat.exp Please help... (1 Reply)
Discussion started by: getdpg
1 Replies

8. Shell Programming and Scripting

shell programs

how to write pipe for finding out the login names and login time of the users whose login name begins with p. (1 Reply)
Discussion started by: rameshparsa
1 Replies

9. Linux

Linux-programs

I have installed Red Hat Linux 9.0 recently on my computer. Im wondering if there are any good sites for downloading linux programs besides the site of Red Hat. Thank you in advance!:D (4 Replies)
Discussion started by: SolidSnake
4 Replies

10. UNIX for Dummies Questions & Answers

Where did my programs go?

I notice that (Mandrake) Linux and Windows do not seem to operate alike in terms of installing third party software. Windows, on one hand, creates icons and adds items to the Start Menu, with the help of the InstallShield--or equivalent, of course, but Linux, on the other hand, seems to care... (3 Replies)
Discussion started by: helvetica
3 Replies

Featured Tech Videos