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
PAM_MAKE(8)							 Reference Manual						       PAM_MAKE(8)

NAME
pam_make - PAM module which calls make SYNOPSIS
pam_make.so [debug] [nosetuid] [make=prog] [log=file] /path/ [...] DESCRIPTION
pam_make is a PAM module that can be used to run make in a given directory. OPTIONS
debug Print debug information. log=file The output of make is appended to file nosetuid Per default pam_make.so will execute make with the effective user ID of the calling process. Specifying this option means make is run with the real user ID. make=prog The command prog is used instead of make. MODULE SERVICES PROVIDED
The services auth, account, password and session are supported. RETURN VALUES
PAM_SUCCESS The make command runs successfull. PAM_SERVICE_ERR No argument or a wrong number of arguments were given. PAM_SYSTEM_ERR A system error occured or the make command failed. PAM_IGNORE pam_setcred was called, which does not execute the make command. EXAMPLES
Add the following line to /etc/pam.d/passwd to rebuild the NIS database after each local password change: passwd optional pam_make.so /var/yp This will execute the command: make -C /var/yp HISTORY
The first implementation of pam_make was written by Mihai Ibanescu <misa@dntis.ro>. SEE ALSO
pam.conf(5), pam.d(8), pam(8) AUTHOR
pam_make was written by Thorsten Kukuk <kukuk@thkukuk.de>. Reference Manual 10/25/2006 PAM_MAKE(8)
All times are GMT -4. The time now is 10:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy