What am I doing wrong here?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users What am I doing wrong here?
# 1  
Old 05-22-2011
What am I doing wrong here?

I am working on a simple login ID check shell script that should prompt for a user ID then check to see if this user is logged on. Trying to get the hang of this stuff so I am thinking of my own little projects.


Code:
#! /bin/sh
echo "please enter a user name"
read user
if user=$user
    then
 do
User=`who |grep user1,user2,user3|cut -d " " -f1`
echo User ID = $User
fi
 done


Last edited by pludi; 05-23-2011 at 08:56 AM..
# 2  
Old 05-22-2011
It is hard to guess what a script was intended to do when it contain many syntax and logic errors.

The functioning lines appear to boil down to displaying the given user from a "who" report:

Code:
#!/bin/sh
echo "please enter a user name"
read user
who -u | grep "^${user} " | awk '{print $1}'



Btw. If you get an error message, please always post the error message as well as the script.

Last edited by methyl; 05-22-2011 at 09:06 PM..
# 3  
Old 05-22-2011
Quote:
Originally Posted by methyl
It is hard to guess what a script was intended to do when it contain many syntax and logic errors.

The functioning lines appear to boil down to displaying the given user from a "who" report:

Code:
#!/bin/sh
echo "please enter a user name"
read user
who -u | grep "^${user} " | awk '{print $1}'



Btw. If you get an error message, please always post the error message as well as the script.
The script worked as you have it. Thanks for the help... but what I was looking for is a way to tell if the person is currently logged in and give an echo to when they logged in. Sorry I should have been more concise!
# 4  
Old 05-22-2011
One idea is to count the number of times a user appears in the "who -u" list by using the "wc -l" command (which just counts the number of lines it sees).
The backticks ` ` are important and cause the commands to be executed. Note the correct syntax for an "if" statement. Not clear where the "do" and "done" figure in Post #1.

Code:
#!/bin/sh
echo "please enter a user name"
read user
user_login_count=`who -u | grep "^${user} " | wc -l`
if [ ${user_login_count} -gt 0 ]
then
       echo "User ${user} is logged in ${user_login_count} times"
       # Show some evidence
       who -u | grep "^${user} " | awk '{print $1}'
else
       echo "User ${user} is not logged in"
fi


If you have a modern POSIX shell, the line containing the backticks can be replaced with the more eloquent:
Code:
user_login_count=$(who -u | grep "^${user} " | wc -l)


When posting it always helps to say what Operating System and Shell you have. There is much variation.
This User Gave Thanks to methyl For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Why result is wrong here ? whether break statement is wrong ?

Hi ! all I am just trying to check range in my datafile pls tell me why its resulting wrong admin@IEEE:~/Desktop$ cat test.txt 0 28.4 5 28.4 10 28.4 15 28.5 20 28.5 25 28.6 30 28.6 35 28.7 40 28.7 45 28.7 50 28.8 55 28.8 60 28.8 65 28.1... (2 Replies)
Discussion started by: Akshay Hegde
2 Replies

2. Shell Programming and Scripting

Is there anything wrong?

For one of my script, I want one extra parameter needs to be added to one of the Usage option. Below its given #Check Input parameters are valid if ; then function usage() { echo echo "*******************************************" echo " !!! USAGE... (2 Replies)
Discussion started by: raghunsi
2 Replies

3. UNIX for Dummies Questions & Answers

What is wrong in here ???

]#PATH=/usr/bin:/etc:/bin:/boot/grub:/boot/grup/bin: /boot/solaris/bin:/sbin:/usr/openwin/bin:/usr/5bin://usr/X11/bin:/usr/apache/bin:/usr/apache2/bin:/usr/appserver/bin:... (9 Replies)
Discussion started by: microbot
9 Replies

4. Shell Programming and Scripting

what I m doing wrong?

when user select option 2 nothing happen.for testing purpose I put echo command but is not executing . basically when user prompt for option 2,I want to get list of database name from user separeted by space (TEST DEVL) and put into the file seprated by new line TEST DEVL after that stay on... (1 Reply)
Discussion started by: okreporthai
1 Replies

5. UNIX for Dummies Questions & Answers

what is wrong with this tr -d?

here is my command in bash shell on Mac OS X tiger: history | tr -d emacs here is what I get: hitory | grp "" | tr -d "" hitory | grp "" | tr -d """" hitory | grp "" | tr -d '' hitory | grp "" | tr -d '' hitory | grp "" | tr -d '' hitory | grp "" | tr -d... (3 Replies)
Discussion started by: cleansing_flame
3 Replies

6. UNIX for Dummies Questions & Answers

What am I doing wrong?

I really just mess around in UNIX, for the most part, when I want to get something done. I can usually piece things together by searching for brief how-to's on Google, but the syntax errors in my following .sh file are really confusing me. I've got lots of programming experience in other places, so... (7 Replies)
Discussion started by: demonpants
7 Replies

7. UNIX for Dummies Questions & Answers

what is wrong here

Hello, I have a simple script such as ----------------------------- #! /bin/sh YEAR=`date -u +%Y`; MONTH=`date -u +%m`; DAY=`date -u +%d`; DATE=$MONTH$DAY$YEAR LOGFILES=auditTrail-$DATE LOGMATCH=$LOGFILES\* ARGUM='' # find all files and write them to a file find . -name... (7 Replies)
Discussion started by: arushunter
7 Replies

8. Shell Programming and Scripting

Anything wrong with this

Does anyone see anything wrong with this. #getInfraFiles() #{ # cd Infra/$DAY # rm * # /usr/bin/ftp -i -n $LINE << cmd # user "$USER" "$PASSWD" # cd $INFRAPATH # binary # mget * # bye #} besides that its commented out (4 Replies)
Discussion started by: rcunn87
4 Replies

9. UNIX for Dummies Questions & Answers

Please tell me what do I do wrong here!

#!/usr/bin/csh # DAY=`date +%y%m%d` H=`date +%H` M=`date +%M` mailx -s "$H-Myfile" email@email.com</home/mydir/myfile Thanks! (4 Replies)
Discussion started by: bobo
4 Replies

10. UNIX for Advanced & Expert Users

What am I doing wrong

When I execute following shell script I am getting the following error syntax error at line 50 : `<<' unmatched What am I doing wrong :confused: Script begins here ---------------- MPAN_FILE=$1 exec 3<$MPAN_FILE ... (2 Replies)
Discussion started by: guptan
2 Replies
Login or Register to Ask a Question