Bird
Raised Fist0
Bash Scriptingscripting~10 mins

User account management script in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - User account management script
Start Script
↓
Check Input Arguments
↓
Match Command: add|delete|list
↓
Add User
↓
Show Result
↓
End Script
The script starts, checks the command given, runs the matching user action (add, delete, or list), then shows the result and ends.
Execution Sample
Bash Scripting
#!/bin/bash
if [ "$1" = "add" ]; then
  sudo useradd "$2"
  echo "User $2 added"
elif [ "$1" = "delete" ]; then
  sudo userdel "$2"
  echo "User $2 deleted"
else
  cut -d: -f1 /etc/passwd
fi
This script adds or deletes a user based on the first argument, or lists users if no valid command is given.
Execution Table
StepInput ArgumentsCondition CheckedAction TakenOutput
1add alice$1 == 'add'?Yes, run useradd aliceUser alice added
2delete bob$1 == 'add'?No, check $1 == 'delete'?No
3delete bob$1 == 'delete'?Yes, run userdel bobUser bob deleted
4list$1 == 'add'?NoNo
5list$1 == 'delete'?NoNo
6listElse branchRun cut to list users(list of users)
7unknown$1 == 'add'?NoNo
8unknown$1 == 'delete'?NoNo
9unknownElse branchRun cut to list users(list of users)
💡 Script ends after performing the matched action or listing users.
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 6After Step 9
$1 (command)noneadddeletelistunknown
$2 (username)nonealicebobnonenone
Key Moments - 3 Insights
Why does the script list users when the command is unknown?
Because the else branch runs when $1 is not 'add' or 'delete', as shown in execution_table rows 6 and 9.
What happens if no username is given with 'add' or 'delete'?
The script tries to run useradd or userdel with an empty username, which will cause an error. This is not handled in the current script.
Why do we use sudo before useradd and userdel?
Because adding or deleting users requires admin rights. Without sudo, these commands will fail unless run as root.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output when the input is 'add alice'?
A(list of users)
BUser alice deleted
CUser alice added
DNo output
💡 Hint
Check row 1 in the execution_table for input 'add alice'.
At which step does the script run the command to delete a user?
AStep 3
BStep 6
CStep 1
DStep 9
💡 Hint
Look for the action 'run userdel bob' in the execution_table.
If the input is 'unknown', what branch does the script take?
AAdd user branch
BElse branch to list users
CDelete user branch
DScript exits without output
💡 Hint
See rows 7-9 in the execution_table for input 'unknown'.
Concept Snapshot
User account management script syntax:
if [ "$1" = "add" ]; then
  sudo useradd "$2"
elif [ "$1" = "delete" ]; then
  sudo userdel "$2"
else
  cut -d: -f1 /etc/passwd
fi

Use first argument as command, second as username.
Add/delete users or list all users if unknown command.
Full Transcript
This script starts by checking the first input argument. If it is 'add', it runs the command to add a user with the second argument as username and prints confirmation. If it is 'delete', it deletes the user named by the second argument and prints confirmation. If the command is anything else, it lists all users on the system by reading /etc/passwd. Variables $1 and $2 hold the command and username respectively. The script ends after performing the requested action. Using sudo is necessary for useradd and userdel commands. If no username is given for add or delete, the script will try to run the command with an empty username, which causes an error. This script is a simple example of user account management in bash.

Practice

(1/5)
1. What is the main purpose of a bash script that manages user accounts with commands like useradd and userdel?
easy
A. To change the system hostname
B. To automate adding, deleting, and listing users on the system
C. To update software packages automatically
D. To monitor network traffic

Solution

  1. Step 1: Understand the commands used

    The commands useradd and userdel are specifically for managing user accounts on Linux systems.
  2. Step 2: Identify the script's goal

    Since the script uses these commands, its main purpose is to automate user account management tasks like adding, deleting, and listing users.
  3. Final Answer:

    To automate adding, deleting, and listing users on the system -> Option B
  4. Quick Check:

    User management commands = automate user tasks [OK]
Hint: Look for user management commands like useradd/userdel [OK]
Common Mistakes:
  • Confusing user management with system updates
  • Thinking it changes network settings
  • Assuming it modifies system hostname
2. Which of the following is the correct syntax to add a new user named alice in a bash script?
easy
A. createuser alice
B. adduser alice
C. newuser alice
D. useradd alice

Solution

  1. Step 1: Recall the standard command for adding users

    The standard Linux command to add a user is useradd.
  2. Step 2: Match the command with the username

    Using useradd alice correctly adds a user named alice.
  3. Final Answer:

    useradd alice -> Option D
  4. Quick Check:

    Standard add user command = useradd [OK]
Hint: Remember: useradd is the standard command to add users [OK]
Common Mistakes:
  • Using adduser which may not be available on all systems
  • Typing createuser or newuser which are invalid commands
  • Confusing commands with other system utilities
3. What will be the output of this bash snippet if the script is run with root privileges?
if id "bob" &>/dev/null; then
  echo "User exists"
else
  echo "User does not exist"
fi
medium
A. User does not exist
B. User exists
C. Syntax error
D. Permission denied

Solution

  1. Step 1: Understand the id command usage

    The command id "bob" checks if user bob exists. If bob does not exist, it returns an error.
  2. Step 2: Analyze the if condition and output

    The script redirects errors to /dev/null, so if bob does not exist, the else branch runs, printing "User does not exist".
  3. Final Answer:

    User does not exist -> Option A
  4. Quick Check:

    id command fails = else branch runs [OK]
Hint: id command success means user exists; else means no user [OK]
Common Mistakes:
  • Assuming output shows error messages
  • Thinking permission issues cause output
  • Confusing command syntax with errors
4. Identify the error in this script snippet that tries to delete a user named charlie:
userdel charlie
if [ $? -eq 0 ]; then
  echo "User deleted"
else
  echo "Failed to delete user"
fi
medium
A. Missing sudo or root privileges to run userdel
B. Incorrect syntax for if statement
C. userdel command should be userremove
D. No error, script works fine

Solution

  1. Step 1: Check command permissions

    The userdel command requires root privileges. Running it without sudo or as root will fail.
  2. Step 2: Verify script syntax and commands

    The if statement syntax and command are correct, but permission issues cause failure.
  3. Final Answer:

    Missing sudo or root privileges to run userdel -> Option A
  4. Quick Check:

    userdel needs root = permission error if missing [OK]
Hint: Remember: userdel needs root or sudo to succeed [OK]
Common Mistakes:
  • Thinking userdel syntax is wrong
  • Using wrong command name like userremove
  • Ignoring permission requirements
5. You want to write a bash script that adds multiple users from a list in a file users.txt. Which script snippet correctly reads each username and adds the user, skipping empty lines?
hard
A. read users.txt | while read user; do useradd $user done
B. for user in $(cat users.txt); do useradd $user done
C. while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt
D. cat users.txt | while useradd; do echo $user done

Solution

  1. Step 1: Understand reading lines safely

    Using while read user reads each line safely, including spaces, and allows skipping empty lines.
  2. Step 2: Check skipping empty lines and adding users

    The condition [ -z "$user" ] && continue skips empty lines. Then useradd "$user" adds the user correctly.
  3. Final Answer:

    while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt -> Option C
  4. Quick Check:

    Safe line read + skip empty + add user = while read user; do [ -z "$user" ] && continue useradd "$user" done < users.txt [OK]
Hint: Use while read and check empty lines to avoid errors [OK]
Common Mistakes:
  • Using for loop with word splitting causing errors
  • Incorrect pipe usage with cat and while
  • Not skipping empty lines causing useradd errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard