954,190 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Using Grep

my problem I have to write on a single line a command to launch a script only if the number of users on the system is less than ten.
This is what I have so far.
grep | who "* < 10 " $Users-on
I always get confused about quotes and brackets

hotlantas69
Newbie Poster
7 posts since May 2004
Reputation Points: 10
Solved Threads: 0
 

Hello,

Grep is a filter, meaning that you have to send something to grep before grep can do anything. For example:

ps -aux | grep kc0arf

on a *nix machine will list out all of the processes that have kc0arf on the output of the ps command.

So, you need to use the who command to find out how many users are logged onto your machine. That is done by:

who

And you see all of the users. But let's look further:

man who

and you will see some options. Looking, we see who -- count.

Take a look at that, and you should find what you are looking for.

Unfortunately, I do not know further on how to do a conditional at the command prompt... I usually write a short bash script that has if/then/else logic nice and neatly formatted.

Let us know.

Christian

kc0arf
Posting Virtuoso
Team Colleague
1,937 posts since Mar 2004
Reputation Points: 121
Solved Threads: 57
 
Unfortunately, I do not know further on how to do a conditional at the command prompt... I usually write a short bash script that has if/then/else logic nice and neatly formatted.

You'd just write the same thing at the prompt, just use semicolons instead of carriage returns:

bash-2.05# <strong>if [ foo ] ; then bar ; else echo "not foo or bar" ; fi</strong>
alc6379
Cookie... That's it
Team Colleague
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147
 

The syntax is different according for each shell, but if you are using the bash shell you could try the following:

if [ `who | wc -l` -lt 10 ]; then
echo "less than";
else
echo " more than";
fi

which can be written as one line as well, but i don't know what difference that would make.

if [ `who | wc -l` -lt 10 ]; then echo "less than"; else echo " more than"; fi

the point is that you need two programs, one that lists the users: who and one that counts lines wc.

wc is actually a word counting program, but with the -l flag it counts lines

The execution inverted comma's '`' mean to take the textual result and use it as a variable. That is the number that is returned from word count should be used as a variable.

The if statement uses the -lt flag, which stands for less than
so if [ `who | wc -l` -lt 10 ]
means if the the number of lines of the who output is less than 10, then perform the following action ...
in our case just echoing out to the screen, but you will want to run your program there

l8a
profhof

profhof
Newbie Poster
1 post since May 2005
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: