Sponsored Content
Top Forums UNIX for Dummies Questions & Answers combine 2 lines (command & echo) Post 8067 by LivinFree on Friday 5th of October 2001 03:58:51 AM
Old 10-05-2001
Hey, no problem! I'll add lots and lots of comments, so you can "read along" with the code...

Code:
#!/bin/sh
# The first thing I usually do in a script is define "functions"
# A function (like the one below) takes the form of
# function_name () {
# The Commands You Want Inside
# }
# Then you can just call the function_name to execute it!
# I like functions, even short ones like this, because
# it makes my "if" statements small and easy to read...
use_msg () {
echo "Usage:  `basename $0` [name]"
}
# Below is some very basic sanity checking.
# Basically, what it says, is "if there isn't exactly one argument,
# print the use_msg, then exit with errors"
# the "$#" operator counts the number of arguments. "-ne"
# Stands for "not equal".
if [ "$#" -ne "1" ] ; then
        use_msg
        exit 2
fi
# Okay, so we made it this far, lets try to extract the real name
# from the passwd file. So we're searching passwd for a
# line beginning with (^) the user id (${1}). I put curly
# braces around some of my variables to help myself keep
# it seperate from the rest. You probably don't even really need
# it here. Also, make sure you are using backticks instead of
# single quotes! The backtick key is usually found near the top
# left of your keyboard, under the Esc key
name_t=`grep ^${1} /etc/passwd | cut -d: -f5 | cut -d, -f1`
#OK, if we can't extract the real name of the user, the variable
# $name_t will be empty. If that's the case, lets use the UserID
# instead. Otherwise, use the name. It'll make the script look
# nicer later on
if [ "$name_t" = "" ] ; then
        name="$1"
else
        name="$name_t"
fi
# Here's your trick to see if the user exists:
who | grep $1 >/dev/null 2>&1
# Now watch what we're doing with the "logg" variable. If the
# user above command is successful ( exited with 0 status),
# then make the "logg" var empty. If the command did not 
# succeed (e.g. the user isn't logged in), then make logg equal
# to "not ". The space on the end is important, once again to
# make the output readable. Try it without the space, and
# see what happens.
if [ "$?" = "0" ] ; then
        logg=""
else
        logg="not "
fi
# Alrighty! This is the fruits of your labor! You echo out the
# name, which we defined above (it'll either be the full name,
# or the usedid you gave it on the command line, remember?),
# then you'll see what happens with the logg var. Remember,
# since it's empty when the user is logged it, the string will say
# "is logged in". If the user is not logged in, it will insert
# "not", then a space to say "is not logged in". The curly braces
# are needed right here to keep $logg from looking like
# $logglogged, which the shell will not understand.
echo "${name} is ${logg}logged in"

Seriously though - the best experience is to run this script, then make some changes, to "get a feel" for how the different items interact. So experiment, play, improve, and have fun!

Please don't hesitate to post back with any other questions. It may make sense to me, but not to you. Or vice-versa.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Combine two lines

Hi I have a file with the records 1 A B C D 2 E F G H 3 I J K L 4 M N O P In the ouput I want 1 A B C D 2 # F G H 3 I J K L 4 M N O P How to achieve this? (10 Replies)
Discussion started by: superprg
10 Replies

2. What is on Your Mind?

[[ $(date +%Y) == 2007 ]] && echo "Happy New Year"

Same as the Title! :) (2 Replies)
Discussion started by: ripat
2 Replies

3. Shell Programming and Scripting

combine 2 lines

Moderator, kindly delete this thread because I already found what I needed... thanks. (0 Replies)
Discussion started by: Deanne
0 Replies

4. Shell Programming and Scripting

combine two perl lines into a single perl command

Hi Everyone, i have a string 00:44:40 so: $tmp=~ s/://gi; $tmp=~s/({2})({2})({2})/$1*3600+$2*60+$3/e; the output is 2680. Any way to combine this two lines into a single line? Thanks (4 Replies)
Discussion started by: jimmy_y
4 Replies

5. Shell Programming and Scripting

Append && echo "success" to all commands

I am learning to build from SVN and other tools, with a lot of copying and pasting from forums. I like to append && echo "success" to all commands so that I can see at a glance if things went all right. Is there a way that I can have the bash shell append this to all commands? Thanks! (5 Replies)
Discussion started by: dotancohen
5 Replies

6. Shell Programming and Scripting

Perl: combine Backtick & system() I/O operation?

Hi - Within perl I want to execute a system command. I want to re-direct all the output from the command to a file (@result = `$cmd`;), but I ALSO want the results to be displayed on the screen (system("$cmd"); The reason is this - if the command completes, I want to process the output. If the... (6 Replies)
Discussion started by: jeffw_00
6 Replies

7. Shell Programming and Scripting

How to combine lines?

Hi, I have a file like this: "sdfc@abc.com","arovls","some addr ", "more stuff" "ssss@email.com","arovls","some addr", "sss" "edx@email.com","arovls","some addr", "sssdfvv" "ssss@a55.com","arovls","some addr", "lsdsdgf" "ssss@0234.com","aro vls","123 Main", "lSdfv" I want to... (4 Replies)
Discussion started by: erniel
4 Replies

8. Shell Programming and Scripting

How to combine 2 files and output the unique & difference?

Hi Guys, I have two input files and I want to combine them and get the unique values and differences and put them into one file. See below desired output file. Inputfile1: 1111111 2222222 3333333 7860068 7860069 7860071 7860072 Inputfile2: 4444444 (4 Replies)
Discussion started by: pinpe
4 Replies

9. Shell Programming and Scripting

awk to combine lines if fields match in lines

In the awk below, what I am attempting to do is check each line in the tab-delimeted input, which has ~20 lines in it, for a keyword SVTYPE=Fusion. If the keyword is found I am splitting $3 using the . (dot) and reading the portion before and after the dot in an array a. If it does have that... (12 Replies)
Discussion started by: cmccabe
12 Replies

10. Shell Programming and Scripting

awk to remove lines that do not start with digit and combine line or lines

I have been searching and trying to come up with an awk that will perform the following on a converted text file (original is a pdf). 1. Since the first two lines are (begin with) text they are removed 2. if $1 is a number then all text is merged (combined) into one line until the next... (3 Replies)
Discussion started by: cmccabe
3 Replies
finger(1)							   User Commands							 finger(1)

NAME
finger - display information about local and remote users SYNOPSIS
finger [-bfhilmpqsw] [username...] finger [-l] [ username@hostname 1 [ @hostname 2 .. .@hostname n...]] finger [-l] [ @hostname 1 [ @hostname 2 .. .@hostname n...]] DESCRIPTION
By default, the finger command displays in multi-column format the following information about each logged-in user: o user name o user's full name o terminal name (prepended with a `*' (asterisk) if write-permission is denied) o idle time o login time o host name, if logged in remotely Idle time is in minutes if it is a single integer, in hours and minutes if a `:' (colon) is present, or in days and hours if a `d' is present. When one or more username arguments are given, more detailed information is given for each username specified, whether they are logged in or not. username must be that of a local user, and may be a first or last name, or an account name. Information is presented in multi-line format as follows: o the user name and the user's full name o the user's home directory and login shell o time the user logged in if currently logged in, or the time the user last logged in; and the terminal or host from which the user logged in o last time the user received mail, and the last time the user read mail o the first line of the $HOME/.project file, if it exists o the contents of the $HOME/.plan file, if it exists Note: when the comment (GECOS) field in /etc/passwd includes a comma, finger does not display the information following the comma. If the arguments username@hostname1[@hostname2...@hostnamen] or @hostname1[@hostname2...@hostnamen] are used, the request is sent first to hostnamen and forwarded through each hostnamen-1 to hostname1. The program uses the finger user information protocol (see RFC 1288) to query that remote host for information about the named user (if username is specified), or about each logged-in user. The information dis- played is server dependent. As required by RFC 1288, finger passes only printable, 7-bit ASCII data. This behavior may be modified by a system administrator by using the PASS option in /etc/default/finger. Specifying PASS=low allows all characters less than decimal 32 ASCII. Specifying PASS=high allows all characters greater than decimal 126 ASCII. PASS=low,high or PASS=high,low allows both characters less than 32 and greater than 126 to pass through. OPTIONS
The following options are supported, except that the username@hostname form supports only the -l option: -b Suppresses printing the user's home directory and shell in a long format printout. -f Suppresses printing the header that is normally printed in a non-long format printout. -h Suppresses printing of the .project file in a long format printout. -i Forces "idle" output format, which is similar to short format except that only the login name, terminal, login time, and idle time are printed. -l Forces long output format. -m Matches arguments only on user name (not first or last name). -p Suppresses printing of the .plan file in a long format printout. -q Forces quick output format, which is similar to short format except that only the login name, terminal, and login time are printed. -s Forces short output format. -w Suppresses printing the full name in a short format printout. FILES
$HOME/.plan user's plan $HOME/.project user's projects /etc/default/finger finger options file /etc/passwd password file /var/adm/lastlog time of last login /var/adm/utmpx accounting ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWrcmds | +-----------------------------+-----------------------------+ SEE ALSO
passwd(1), who(1), whois(1), passwd(4), attributes(5) Zimmerman, D., The Finger User Information Protocol, RFC 1288, Center for Discrete Mathematics and Theoretical Computer Science (DIMACS), Rutgers University, December 1991. NOTES
The finger user information protocol limits the options that may be used with the remote form of this command. SunOS 5.10 6 Nov 2000 finger(1)
All times are GMT -4. The time now is 12:38 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy