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).