Skip to content
Advertisement

How do I search for a certain piece of text inside of a variable?

I am working on a script which prompts the user for their username. Once entered, the script uses the ‘rwho’ command to get a list of users who are logged into the network. It should crosscheck the text they entered (their username) with the results from the rwho command.

If a match is found then it displays a message saying so, if not then it also makes the user aware of this.

Here is the script and my attempt so far:

#!/bin/sh
#
# User network checking script
#

# Using rwho command to get user list
OUTPUT="$(rwho)"
echo "${OUTPUT}"

# Prompt for username
echo "Please enter your username: " 
read username

# Input validation
if [ -z "$username"]
  then
   echo "No username supplied"
   echo "Please enter your username: "
 read username
fi

# Search for user
if `echo ${OUTPUT} | grep "${username}" 1>/dev/null 2>&1'
 then 
   echo "$username is logged in."
 else
   echo "$username is not present."  
fi

I consistently get errors with the Search for User part. I don’t have outstanding knowledge of Linux so if anyone could fix this and help me I would be greatly appreciative.

Advertisement

Answer

Your usage of quotes is weird.

if echo "$OUTPUT" | grep -q "$username"

should work.

-q makes grep quiet (and is shorter than your redirections).

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement