need help on that script!!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting need help on that script!!
# 1  
Old 03-30-2008
need help on that script!!

Hello everybody,
well i have a problem with my script(has the name of the user as an argument) written by bash shell.in fact this script has to accomplish these things:
it has first to make sure if the user has an account on my machine
if that is true the shell has to return the adress email of the user,the adress email is in the 6th zone in the /etc/passwd
in fact ,to make sure that the user really exist i used this
cat /etc/passwd|grep -i $1
to acceede to the 6th zone we use cut -d : -f6 /etc/passwd
my problem is that i dont know how to express if the user doesn't exist,how to write it in bash!SmilieSmilie
i need your help!
thanx!!
# 2  
Old 03-30-2008
You need to make sure the grep looks at the first field in the passwd file, but that's easy enough to fix.

Code:
who=`grep "^$1:" /etc/passwd | cut -d : -f6 | grep .`
case $? in 0) dance and sing, user is "$who";;
  *) echo "$0: user '$1' not found" >&2
      exit 1;;
esac

In the backticks, I tacked on a "grep ." to see if the cut generated any output. If there is any output, grep will return success, and $? will be 0. (See the sh manual page for a bit more on this.)

The choice of case over if/then/else is kind of old-school; if you are more familiar with the if syntax, perhaps you prefer that -- I think it's uglier.

(This is for the terminally curious readers. Skip it if you don't understand it.

Back in the old days, it mattered more, because if would invoke an external process, whereas case does not. These days, test and friends are built into the shell anyway, so they don't create an external process.)

P.S. Try to think of a proper topic when you post. Most people who post here need help with a script; try to be informative and succinct.
# 3  
Old 03-30-2008
grep -c string /etc/passwd counts the occurrences of a particular string. So if grep -c returns 0, the user doesn't exist.

Edit: Era beat me to it! Smilie
# 4  
Old 03-30-2008
I would also recommend against the use of grep -c for this. grep whatever sets $? which is much easier to manipulate in a shell script. If you have to parse the output and see if it's zero, that's an extra step.
# 5  
Old 03-30-2008
Quote:
Originally Posted by era

P.S. Try to think of a proper topic when you post. Most people who post here need help with a script; try to be informative and succinct.
It is clear!!Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question