Control structures and scripting question..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Control structures and scripting question..
# 1  
Old 11-08-2009
Control structures and scripting question..

Hey guys, I'm currently working on a project for comp sci course, and I'm very green to Unix and scripting, and only have a semesters worth of programming knowledge (bare with me! sorry!). What I'm trying to do is make a 'if ... then ... fi' control structure that takes user input and then searches the file where data is going and if the name already exists in first field it prints error msg (cant have two of same name in data file)

So basically its sort a mock inventory auto parts management script, user goes to add new parts, first is prompted to enter name of part ... I then want to compare user input to first field of all entires already in my data file (auto.parts) ... if the part exists print error message, if not continue and add part to data file.

So far I got:
Code:
#bin/sh

echo -n "Please enter auto part name:"
read apname
if [ "$apname" = "$1" ]
then
        echo -n "Part already exists!  Can not enter duplicate parts."
        stop=1
else
        echo -n "Please enter operator's name:"
        read opname
        status="Part Available"
        cdate=""
        bname=""
fi
echo ${apname}:${opname}:${status}:${cdate}:${bname} >> auto.parts
echo "A new auto part has been added to inventory!"

It seems to not be comparing the user input to first field (first field is where auto part name goes i.e <partname>:<stuff>:<stuff>:<etc..>), it just ignores the statement and continues on ... allowing me to enter 100 Brake:etc:etc:etc lines if I wish too, which it shouldn't!. I'm almost positive i'm using wrong syntax in my if [statement]. ANY help, or finger pointing me to a great website for beginners would be MUCH appreciated!!

Thanks guys!
# 2  
Old 11-08-2009
Quote:
Originally Posted by SlapnutsGT
What I'm trying to do is make a 'if ... then ... fi' control structure that takes user input and then searches the file

Nowhere in your script do you even look at the file.

All you ever do is append a record to it.
# 3  
Old 11-08-2009
Aww Ok, I know what you mean what is the proper way to add that to my if statement?

Also, I'm trying to use grep i.e:
Code:
if [ "$apname" = "grep '^[$apname]' auto.parts" ]

Is this even allowed? I'm scratching my head here, but on here for hours scouring the internet looking for a solution but most places I find either do poor job explaining (to me at least) what I need to add to my structure.
# 4  
Old 11-08-2009
I see you creating the file, but why do you think

Code:
if [ "$apname" = "$1" ]


is searching in auto.parts?

It isn't.


Morever: if you are entering "100 Brake", you need to split the quantity from the part.

Try this
Code:
echo "Enter qty part"
read line
echo "You typed $line"
set $line
echo $1 
echo $2

Does that help?

---------- Post updated at 06:10 PM ---------- Previous update was at 06:08 PM ----------

Sure. Try

grep -q "^$apname" auto.parts && echo "is in parts"
# 5  
Old 11-08-2009
Quote:
grep -q "^$apname" auto.parts && echo "is in parts"
Thanks for reply, the grep code is close to working, im just getting problem now where it always says part is duplicated, but hopefully I can figure it out from here.

Quote:
Morever: if you are entering "100 Brake", you need to split the quantity from the part.

Try this
Code:
echo "Enter qty part"
read line
echo "You typed $line"
set $line
echo $1 
echo $2

I did a poor job of explaining, I don't need to enter quantities, I was just figuratively saying my busted script was allowing more then one to be entered.

But, thanks for the help, hopefully I can get it from here now that I'm aware about specifying the file I gotta look into.

---------- Post updated at 07:56 PM ---------- Previous update was at 06:40 PM ----------

OK! I'm still messing with it and its not working, it keeps telling me everything is duplicated no matter what I type.

My code looks like:
Code:
#bin/sh
stop=0
while test $stop -eq 0
do
echo "Please enter auto part name:"
read apname
if [ "grep -q "$apname" auto.parts" ]
then
        echo -e "Part already entered into inventroy.\n"
        echo -e "Duplicate parts not allowed.\n"
        echo -e "Returning to edit menu...\n"
        stop=1
else
        echo -n "Please enter operator's name:"
        read opname
        status="Part Available"
        cdate=""
        bname=""
        echo ${apname}:${opname}:${status}:${cdate}:${bname} >> auto.parts
        echo -e "A new auto pat has been added to inventory!\n"
fi
done

Sorry to be a bother but this is really annoying me!

Is there a negate expression I should be using in my else statement? Something like:
Code:
grep -q "<$apname is not in file>" auto.parts

If I don't need it, what is the regular expression to see if the string is NOT in a file just so I will know it for future reference? Tried searching but could not find anything.
# 6  
Old 11-08-2009
Quote:
Originally Posted by SlapnutsGT
Code:
if [ "grep -q "$apname" auto.parts" ]


Code:
if grep -q "$apname" auto.parts

The syntax for if is:

Code:
if COMMAND[S]
then
   COMMAND[S]
fi

A command commonly used with 'if' is '[', which is a synonym for test, but it can be any command.

Last edited by cfajohnson; 11-08-2009 at 10:22 PM..
# 7  
Old 11-08-2009
Thanks for all the help guys I finally got it!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. SCO

Emacs Question; Control-G Not Working

Hi! I am using Emacs 22.3.1 and the Control-G command will not work to cancel. I took my init.el file out of the mix and it stills does not work. I am not sure when I upgraded from 20.4 to 22.3.1, if it worked, but it certainly does not now. Any thoughts... (6 Replies)
Discussion started by: trolley
6 Replies

2. UNIX for Advanced & Expert Users

Question for expert only in Access control list

If I'm the admin for the financial system and I want to configure authorization pf file system permission.Also, The first rule is that Managers and clerks can read and write billings for all cases. The second rules is that Paralegals and administrative assits can read and write billings only on... (2 Replies)
Discussion started by: mecnio
2 Replies

3. Shell Programming and Scripting

Scripting question

hi all, I am writing a script and beginner in shell scripting. I have tried the below script. could you please check and let me know whether the below scirpt is correct. Unix details : HP Unix Input file. cat input.txt | tail -4 HTS40002.W1978.PROM HTS40003.W1978.PROM... (17 Replies)
Discussion started by: arun888
17 Replies

4. Shell Programming and Scripting

Scripting question

Preview of command prompt f ---> to start ferret q----> to stop ferret asp@nex:~$ f NOAA/PMEL TMAP FERRET v6.82 Linux 2.6.18-308.8.2.el5PAE 32-bit - 08/03/12 3-Dec-12 16:44 yes? go my.jnl yes?column=4/skip=1/type=num,text ............filename.txt ---... (4 Replies)
Discussion started by: nex_asp
4 Replies

5. Linux

SSH remote control question

I am pretty new to linux so forgive me for asking a basic question :P I am using SSH to control 40 machines. What i am trying to do is remotely bash a shell script on each machine. I am using a for loop to bash every script, code as follows. code in host machine runallworkers.sh: ... ... (2 Replies)
Discussion started by: mgsolid
2 Replies

6. UNIX for Dummies Questions & Answers

Scripting question

folks; I have a script to remove any files that older than 14 days then move any files that younger than 7 days to another directory. but for some reason it doesn't move the files, when i do it manually it works but not through the script. i tried 2 different ways in writing the move part but it... (6 Replies)
Discussion started by: Katkota
6 Replies

7. UNIX for Dummies Questions & Answers

FTP access & control question

Folks; I need some help with these: 1. understanding how to control access rights and manage visibility using FTP in Solaris, in other words, I need to use FTP in Solaris to be able to give some users access to add/modify data to/from the UNIX server. 2. How can i control the space allowed for... (2 Replies)
Discussion started by: Katkota
2 Replies

8. Shell Programming and Scripting

scripting question

I'm new to shell scripting and am having a problem trying to do something in C shell. I want to write a script that will input something instead of a user doing it. For example, using the command 'write' the user is supposed to type something to be sent to another user. I want a script to be able... (3 Replies)
Discussion started by: batmike
3 Replies

9. Shell Programming and Scripting

another scripting question

Hello I am working on cleaning up permissions on Oracle mountpoints and datafiles in unix. I am looking for a script or a scripting idea to 1st. 1. grep for owner oracle 2. ensure its a directory owned for oracle 3. chmod 750 on the oracle owned directory. 4. grep for oracle files, etc... (3 Replies)
Discussion started by: jigarlakhani
3 Replies

10. UNIX for Dummies Questions & Answers

another scripting question

I am writing a script that will identify the oldest file in a directory. Here's the syntax: #!/bin/ksh cd directory chmod 777 * ls -r -1t > file1 sed -n -e "1P" < file1 > file2 So my problem is, now I have file2, which contains the name of the oldest file in the directory. How do I use,... (1 Reply)
Discussion started by: kristy
1 Replies
Login or Register to Ask a Question